grep命令
grep(global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。
测试用例
testout.txt date 命令,每分钟执行一次的结果,共49622行
1 | 以前十行为例: |
选项
-c 计算符合范本样式的列数。
1
2
3
4grep -c "2018年 12月 14日" testout.txt
1440 #24*60=1440
等同于:
grep "2018年 12月 14日" testout.txt |wc -l-A<显示列数> 除了显示符合范本样式的那一行之外,并显示该行之后的内容。
1
2
3
4
5
6grep -A 0 "2018年 12月 14日 星期五 23:00:01" testout.txt
2018年 12月 14日 星期五 23:00:01 CST
grep -A 2 "2018年 12月 14日 星期五 23:00:01" testout.txt
2018年 12月 14日 星期五 23:00:01 CST
2018年 12月 14日 星期五 23:01:01 CST
2018年 12月 14日 星期五 23:02:01 CST-C<显示列数>或-<显示列数> 除了显示符合范本样式的那一列之外,并显示该列之前后的内容。
1
2
3
4
5
6grep -C 2 "2018年 12月 14日 星期五 23:00:01" testout.txt
2018年 12月 14日 星期五 22:58:01 CST
2018年 12月 14日 星期五 22:59:01 CST
2018年 12月 14日 星期五 23:00:01 CST
2018年 12月 14日 星期五 23:01:01 CST
2018年 12月 14日 星期五 23:02:01 CST-P 支持Perl正则表达式
-E 支持扩展正则表达式
-F 不支持正则表达式,将模式按照字面意思匹配
-e 匹配模板,多次使用模板之间关系为 ‘或’
-l 只列出含有匹配的文本行的文件的文件名,而不显示具体的匹配内容
-L 列出文件内容不符合指定的范本样式的文件名称。
-n 列出所有的匹配的文本行,并显示行号
-v 只显示不匹配的文本行
-R/-r 递归搜索,搜索当前目录和子目录
-q 不显示任何信息。
-h 在显示符合范本样式的那一列之前,不标示该列所属的文件名称。
-H 在显示符合范本样式的那一列之前,标示该列的文件名称。
-i/-y 忽略字符大小写的差别。
-w 只显示全字符合的列。
-s 不显示错误信息。
-x 整行内容完全匹配
-o 只输出文件中匹配到的部分。