Fork me on GitHub

find、grep、sed和awk

背景

平时一直都在用,但是一直没有认真仔细的总结过,在此记录下,有空继续补充

Find

在目录结构中搜索文件,并执行指定的操作。

1、按文件名查找
2、按文件特征查找
    访问时间
        find / -amin -10 #查找在系统中最后10分钟访问的文件(access time)
        find / -atime -2 #查找在系统中最后48小时访问的文件
    修改时间
        find / -mmin -5 #查找在系统中最后5分钟里修改过的文件(modify time)
        find / -mtime -1 #查找在系统中最后24小时里修改过的文件
    空
        find / -empty #查找在系统中为空的文件或者文件夹
    大小
    所属用户
        find / -user fred#查找在系统中属于fred这个用户的文件
    所属用户组
        find / -group cat #查找在系统中属于 group为cat的文件
3、混合查找
    !
        find /tmp ! -user panda #在/tmp目录中查找所有不属于panda用户的文件
    -and(-a)
        find /tmp -size +10000c -and -mtime +2 #在/tmp目录下查找大于10000字节并在最后2分钟内修改的文件
    -or(-o)
        find / -user fred -or -user george #在/目录下查找用户是fred或者george的文件文件    

Grep

grep 'test' d* #显示所有以d开头的文件中包含 test的行
grep 'test' aa bb cc    #显示在aa,bb,cc文件中包含test的行
grep '[a-z]\{5\}' aa   #显示所有包含每行字符串至少有5个连续小写字符的字符串的行
grep magic /usr/src  #显示/usr/src目录下的文件(不含子目录)包含magic的行
grep -r magic /usr/src  #显示/usr/src目录下的文件(包含子目录)包含magic的行
grep -w pattern files    #只匹配整个单词,而不是字符串的一部分(如匹配’magic’,而不是’magical’),

Sed

sed语法格式

sed [-hnV][-e<script>][-f<script文件>][文本文件]

参数说明:

-e<script>或--expression=<script> 以选项中指定的script来处理输入的文本文件。
-f<script文件>或--file=<script文件> 以选项中指定的script文件来处理输入的文本文件。
-h或--help 显示帮助。
-n或--quiet或--silent 仅显示script处理后的结果。
-V或--version 显示版本信息

Awk

awk语法格式

awk '{pattern + action}' {filenames}

调用awk的三种方式

1、命令行方式
2、shell脚本方式
3、将awk命令插入单独文件进行调用

入门语法

1、awk -F ' 分隔符 ' {pattern + action}    (默认分隔符是空白或者tab)
2、awk -F ':' 'BEGIN {print "name,shell"} {print $1","$7} END {print "blue,/bin/test"}

awk内置变量

ARGC    命令行参数个数
ARGV    命令行参数排列
ENVIRON    支持队列中系统环境变量的使用
FILENAME    awk浏览的文件名
FNR        浏览文件的记录数
FS        设置输入域分隔符,等价于命令行 -F选项
NF        浏览记录的域的个数
NR        已读的记录数
OFS        输出域分隔符
ORS        输出记录分隔符
RS        控制记录分隔符

print和printf

awk中同时提供了print和printf两种打印输出的函数。
1、print函数的参数可以是变量、数值或者字符串。字符串必须用双引号引用,参数用逗号分隔。如果没有逗号,参数就串联在一起而无法区分。这里,逗号的作用与输出文件的分隔符的作用是一样的,只是后者是空格而已。
2、printf函数,其用法和c语言中printf基本相似,可以格式化字符串,输出复杂时,printf更加好用,代码更易懂。

awk编程

总结

有时候,平时用的很简单的东西,却没有清楚的认识,知其然不知其所以然。

未完待续

附:

参考资料:

-------------本文结束感谢您的阅读-------------
坚持原创技术分享,您的支持将鼓励我继续创作!
0%