grep命令

grep(global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。

测试用例

testout.txt date 命令,每分钟执行一次的结果,共49622行

1
2
3
4
5
6
7
8
9
10
11
以前十行为例:
2018年 12月 12日 星期三 14:53:01 CST
2018年 12月 12日 星期三 14:54:01 CST
2018年 12月 12日 星期三 14:55:01 CST
2018年 12月 12日 星期三 14:56:01 CST
2018年 12月 12日 星期三 14:57:01 CST
2018年 12月 12日 星期三 14:58:01 CST
2018年 12月 12日 星期三 14:59:01 CST
2018年 12月 12日 星期三 15:00:01 CST
2018年 12月 12日 星期三 15:01:01 CST
2018年 12月 12日 星期三 15:02:01 CST

选项

  • -c 计算符合范本样式的列数。

    1
    2
    3
    4
    grep -c "2018年 12月 14日" testout.txt
    1440 #24*60=1440
    等同于:
    grep "2018年 12月 14日" testout.txt |wc -l
  • -A<显示列数> 除了显示符合范本样式的那一行之外,并显示该行之后的内容。

    1
    2
    3
    4
    5
    6
    grep -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
    6
    grep -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 只输出文件中匹配到的部分。


Copyright © Ywnline 版权所有 冀ICP备20005992号-1