grep匹配命令查找

grep常用选项:


  -E :开启扩展(Extend)的正则表达式。 

  -i :忽略大小写(ignore case)。

  -v :反过来(invert),只打印没有匹配的,而匹配的反而不打印。

  -n :显示行号

  -w :被匹配的文本只能是单词,而不能是单词中的某一部分,如文本中有liker,而我搜寻的只是like,就可以使用-w选项来避免匹配liker

  -c :显示总共有多少行被匹配到了,而不是显示被匹配到的内容,注意如果同时使用-cv选项是显示有多少行没有被匹配到。

  -o :只显示被模式匹配到的字符串。

  --color :将匹配到的内容以颜色高亮显示。

  -A n:显示匹配到的字符串所在的行及其后n行,after

  -B n:显示匹配到的字符串所在的行及其前n行,before

  -C n:显示匹配到的字符串所在的行及其前后各n行,context

        -b,--byte-offset    将可执行文件binary当作文本文件来搜索

-c,--count    仅显示找到的行数
-i , --ignore-case    忽略大小写
-n,--line-number    显示行号
-v, --revert-match    取反,列出没有“关键词”的行
-w, --word-regex  按单词搜索,仅匹配这个字符串
-r  逐层便利目录查看
--color  匹配到的行高亮显示
--include  指定匹配的文件类型
--exinclude 过滤掉不需要匹配的文件类型
-A: 显示匹配行及后面多少行, 如: -A3, 则表示显示匹配行及后3行
-B: 显示匹配行及前面多少行, 如: -B3, 则表示显示匹配行及前3行
-C: 显示匹配行前后多少行,   如: -C3, 则表示显示批量行前后3行

1.根据匹配内容过滤:grep "com.test.demo" a.log
2.在当前目录多个文件中搜索关键字starting:grep "starting" * --color

3.统计当前目录下所有文件中哪些文件包含关键字error:grep -"error" *

4.统计当前目录下对应的文件中关键字error出现的行数:grep -c "error" log_logcat@20221109_08-29-39-717-PC_807.log

5.搜索关键字时,尤其时关键词为英语时,可能存在的大小写导致搜索遗漏:grep -i "starting" a.log

6.如果想显示搜索结果所在的行号,可通过-n 参数:
grep -n "com.test.demo" a.log

7.在当前目录中查找匹配的文件名:ls -all | grep "20221109"

8.查看一段时间的日志:grep "11-09 08:2[6-8]" a.log --color

如下搜索打印时间在11-09 08:26到11-09 08:28之间的log信息

9.查找匹配a或者匹配o的行 的信息:grep -e a -e o test.txt

10.查看既包含a又包含o的行: grep a test.txt | grep o

  1. 查看多个文件匹配包含字母a的行: grep a test.sh test.txt

  2. 匹配查询内容的前n行,后n行,前后n行

1.显示匹配行前2行:grep a test.txt -A2
2.显示匹配行后2行: grep a test.txt -B2

  1. 显示匹配行前后2行: grep a test.txt -C2
  1. 匹配字符不区分大小写: grep -i a test.txt

  2. 匹配正则表达式(匹配小写a-z之间的5个字符,即包含5个小写字母的字符):grep -e '[a-z]{5}' test.txt

  3. 统计包含a的行数: grep -c a test.txt

16.遍历当前目录及子目录包含a的行: grep -rI a .

这里不加-I会出现上面内存问题,这是因为grep -r查找的范围会访问所有这个目录下的文件,包括二进制文件,加上-I参数不匹配查询二进制文件,可以解决这个问题。

17.遍历当前目录及所有子目录,查找所有.txt类型的文件中包含a的字符:
grep -rI a --include="*.txt" .

18.查找包含非“a”开头的行:grep ^[^a] test.txt

grep可用于shell中。grep通过返回一个状态值来说明搜索的状态,结果{0:成功,1:不成功,2:搜索的文件不存在}

你可能感兴趣的:(grep匹配命令查找)