Grep
#
时间:2017/8/14 20:38:38
参考:
grep 文本查找#
grep(global search regular expression(RE) and print out the line)是一种机强大的文本搜索工具,可以使用正则表达式搜索文本,并把匹配的行打印出来。
搜索文件或者标准输入流(如果没有文件参数,或者参数是 -
),输出和正则表达式匹配的行。
语法#
1 |
|
选项#
-
正则表达选项
-E: 扩展表表达式
-F: 作为字符串
-G: 作为基础表达式
-P: Perl正则表达式 -
输出选项
-v:输出不匹配的所有行
-o:只输出匹配的内容
-c:只输出匹配的行数
-n:显示行号(匹配的行在文件中的第几行)
-b:显示匹配的位置前面有多少个字符,相当于偏移量。
-l:显示有匹配内容的文件的文件名(多文件)。 -i:忽略大小写。
-r:递归查找。
-e:多个匹配条件,匹配条件之间是或的关系, 不能和-P
一起使用。
-A:显示匹配结果之后的几行
-B:显示匹配结果之前的几行
-C:显示匹配结果前后几行
正则表达式#
符合正则表达式语法的正则表达式,简单语法如下:
.
:代表任意字符*
:零次或多次批评日?
:零次或多次匹配+
:一次或多次匹配^
:匹配行头$
:匹配行尾\w
:字符 [0-9a-zA-Z]\w
:非字符 [!0-9a-zA-Z]\s
:匹配任何空白字符,包括空格、制表符、换页符等。与 [ \f\n\r\t\v] 等效。\d
:数字\D
:非数字
文件#
文件,或文件列表,或者是空,或者是 -
例子#
- 查找文件中包含
sla
的行,a
可有可无,也可以是多个。1
grep -P "sla*" redis.conf
-
匹配行头是
a
,行尾是b
的行。grep -P "^a.*b$" redis.conf 3. 显示包含匹配行的文件名。
grep -l "^A" redis.conf data.txt 4. 递归找出当前目录下的文件,有以
a
开头的行的文件。grep -rl "^a" ./ 5. 多个匹配条件,找出以
a
开头或者以s
结尾的行。grep -e "^a" -e "s$" redis.conf
6. 包含以.txt
结尾的文件,或者包含以.txt
和.war
结尾的文件。grep "^a" ./ -rl --include=.txt grep "^a" ./ -rl --include=.{txt,war} 7. 显示匹配结果前面的两行和后面的三行。
grep -P -B 2 -A 3 "^a" redis.conf 8. 多文件查找
grep "a" A.txt B.txt 9. 查找空行
grep -n "^$" log.txt
-