在 Linux 系统中,grep 用于查找文件中符合条件的字符串,语法格式:grep [选项] "关键字" 文件名
关键字加引号(单引号、双引号),不加引号有一些区别
在查找时,关键字加引号,关键字会被看成一个整体,可以包含空格或特殊字符等。
a 单引号
如果关键字包含特殊字符($ 和 \' 除外),使用单引号会对特殊字符转义,进行完全匹配搜索。
b 双引号
关键字即使包含特殊符号,使用双引号会原样输出。
c 不加引号
搜索包含关键字中任意单词的文本行。
一、打印包含关键字的行
它的语法格式:grep "关键字" 文件名
grep "saferycom" sys.log
二、打印以某关键字开头的行
它的语法格式:grep "^关键字" 文件名
在关键字前面加 ^ 号,表示搜索以关键字开头的行。
grep "^saferycom" sys.log
三、打印某关键字结尾的行
它的语法格式:grep "关键字$" 文件名
我们在关键字后面加上 $ 符号,表示查找以关键字结尾的行。我们查找以 saferycom 结尾的行,并显示出来。
grep "saferycom$" sys.log
四、不区分大小写打印关键词的行
它的语法格式:grep -i "关键字" 文件名
我们打印包含 root 的行,此时关键字可以是 rOOt, Root ,ROOT 等这些关键词。
grep -i "root" sys.log
五、打印关键字并显示行号
它的语法格式:grep -n "关键字" 文件名
在文件 sys.log 中,我们在查找关键字的同时,并且在每行前面显示行号。
grep -n "root" sys.log
六、递归搜索关键字
它的语法格式:grep -r 关键字 目录名
我们搜索所有的文件及子目录,递归查找包含所有关键字的行,控制台会打印出包含关键词的文件和对应的行。
grep -r "root" /cimc/logs
七、统计匹配某关键字的次数
它的语法格式:grep -c "关键字" 文件名
我们统计一下包含 root 的行数,控制台只会显示行数,不会将每一行都打印出来。
grep -c "root" sys.log
八、过滤空白行
它的语法格式:grep -v "^$" 文件名
在这里,我们先输出文件的所有内容,然后键入过滤空白行的命令,对比一下,看看它们有什么不一样的地方。
grep -v "^$" sys.log
九、查找包含多个关键字的行
它的语法格式:grep -E "关键字1|关键字2" 文件名
我们查找文件 sys.log 中包含 root 或者 sync 的行,并且将它们打印到控制台。
grep -E "root|sync" sys.log
上面使用了 Linux 正则表达式。大家可以参照着,多加练习,灵活使用 grep 命令,提高工作效率。