grep命令详解

grep:Global search Regular Expression and Print out the line
-i:在搜索的时候忽略大小写
-n:显示结果所在行号
-c:统计匹配到的行数,注意,是匹配到的总行数,不是匹配到的次数
-o:只显示符合条件的字符串,但是不整行显示,每个符合条件的字符串单独显示一行
-v:输出不带关键字的行(反向查询,反向匹配)
-w:匹配整个单词,如果是字符串中包含这个单词,则不作匹配
-Ax:在输出的时候包含结果所在行之后的指定行数,这里指之后的x行,A:after
-Bx:在输出的时候包含结果所在行之前的指定行数,这里指之前的x行,B:before
-Cx:在输出的时候包含结果所在行之前和之后的指定行数,这里指之前和之后的x行,C:context
-e:实现多个选项的匹配,逻辑or关系
-x: 只显示全列符合的列
-E:使用扩展正则表达式,而不是基本正则表达式,在使用”-E”选项时,相当于使用egrep。
^ : 匹配正则表达式的以“某字符串”开头的行
$ : 匹配正则表达式的以“某字符串”结尾的行
cat a.txt
awqkkjdnsabc
abc
01233
d68823
dadsew
ddddsss
001TESTaaa
002testbbb
ddd eee abc 123
-
-i:在搜索的时候忽略大小写
cat a.txt |grep -i test 001TESTaaa 002testbbb
-
-n:显示结果所在行号
cat a.txt |grep -n test 9:002testbbb
-
-c:统计匹配到的行数,注意,是匹配到的总行数,不是匹配到的次数
cat a.txt |grep -c -i test 2
-
-o:只显示符合条件的字符串,但是不整行显示,每个符合条件的字符串单独显示一行
cat a.txt |grep -o test test
-
-v:输出不带关键字的行(反向查询,反向匹配)
cat a.txt |grep -v a 01233 d68823 ddddsss 002testbbb
-
-w:匹配整个单词,如果是字符串中包含这个单词,则不作匹配
cat a.txt |grep -w abc abc ddd eee abc 123
-
-Ax:在输出的时候包含结果所在行之后的指定行数,这里指之后的x行,A:after
cat a.txt |grep -A1 01233 01233 d68823
-
在输出的时候包含结果所在行之前的指定行数,这里指之前的x行,B:before
cat a.txt |grep -B1 01233 abc 01233
-
-Cx:在输出的时候包含结果所在行之前和之后的指定行数,这里指之前和之后的x行,C:context
cat a.txt |grep -C1 01233 abc 01233 d68823
-
-e:实现多个选项的匹配,逻辑or关系
cat a.txt |grep -e 01233 -e d68823 01233 d68823
-
-x: 只显示全列符合的列
cat a.txt | grep -x abc abc
-
^ : 匹配正则表达式的以“某字符串”开头的行
cat a.txt |grep "^d" d68823 dadsew ddddsss ddd eee abc 123
-
$ : 匹配正则表达式的以“某字符串”结尾的行
cat a.txt |grep "3$" 01233 d68823 ddd eee abc 123
-
-E:使用扩展正则表达式,而不是基本正则表达式,在使用”-E”选项时,相当于使用egrep。
- [ ] : 单个字符,如[A] 即A 符合要求
- [^ ] : 显示不包括括号中字符串的所有行
- [ - ] : 范围匹配,如[A-C],即A、B、C都符合要求;如[a,b],即只有a和b符合要求
- . :单个字符,匹配任意一个字符
- *** :匹配“*”前面的字符,匹配0个或无数个**
- \ :用来屏蔽一个元字符的特殊含义,使其作为单纯的一个字符
-
多个文件中查找
grep "file" file_1 file_2 file_3
-
在多级目录中对文本进行递归搜索
# 搜索当前目录下递归搜索 grep "text" . -r -n # 搜索当前目录下递归搜索以.py 结尾的文件 grep -E "\.py$" . -r -n # 只在目录中所有的.php和.html文件中递归搜索字符"main()" grep "main()" . -r --include *.{php,html} # 在搜索结果中排除所有README文件 grep "main()" . -r --exclude "README"




更多推荐
所有评论(0)