grep常用套路-技巧篇

在Linux里面开发的时候,经常会使用到grep工具来做事。
grep(Global Regular Expression Print)全局正则表达式打印。本文主要去翻译man grep。

命令的格式

       grep [OPTIONS] PATTERN [FILE...]
       grep [OPTIONS] [-e PATTERN | -f FILE] [FILE...]

一共有3个部分:
选项,正则表达式,需要匹配的文件列表。

描述(DESCRIPTION)

grep会使用[PATTERN]去到[FILE](或者是标准输出,或者单个[-]作为文件名)将匹配的行打印到屏幕。
此外,还有两个变种的程序:egrep,fgrep。egrep等价于grep -E。fgrep等价于grep -F。不推荐直接使用egrep或者fgrep,但是提供给比较老的应用在不修改的前提下能正常的运行。

选项

普通程序信息

–help

帮助文件

-V –version

输出版本信息

匹配器选择

此选项是用来指定当前正则表达式的标准

-E, –extended-regexp

extended regular expression标准

-F, –fixed-strings

a list of fixed strings,使用新行来做分割,任何的字串都能能被当成正则来做匹配。

-G, –basic-regexp

basic regular expression

-P, –perl-regexp

a Perl regular expression。这是高度实验性而且grep -P可能会出现很多未实现的警告。

匹配控制

-e PATTERN, –regexp=PATTERN

让[PATTERN]作为匹配。这个也能用于多条件匹配时,或者去保护用-开头的模式。

-f FILE, –file=FILE

指定文件。

-i, –ignore-case

忽略大小写

-v, –invert-match

匹配取反。

-w, –word-regexp

只选取全字匹配的行。

-x, –line-regexp

只选取精准匹配整行的行。

-y

兼容旧版本,和-i的意义相同

一般输出控制

-c, –count

取消掉普通输出;取而代之的是打印在文件中找到的匹配行数。

–color[=WHEN], –colour[=WHEN]

颜色方式输出。

-L, –files-without-match

取消掉普通输出;取而代之的将会打印输入的文件中没有匹配到的文件名

-l, –files-with-matches

取消掉普通输出;取而代之的将会打印输入的文件中匹配到的文件名

-m NUM, –max-count=NUM

最大匹配次数。

-o, –only-matching

只显示匹配字符串;

-q, –quiet, –silent

静默状态运行;不会在标准输出中打印任何内容。如果发现匹配,一个错误被发现的时候,将立即返回0。

输出行前缀控制

-b, –byte-offset

输出匹配位置字节偏移

-H, –with-filename

输出文件名

-h, –no-filename

隐藏文件名

–label=LABEL

添加label

-n, –line-number

显示行号

-T, –initial-tab

输出时添加tab做对齐。

-u, –unix-byte-offsets

使用unix风格的字节偏移。在配合-b来使用。

-Z, –null

输出时,文件名后面缀的:将会去掉。

上下行控制

-A NUM, –after-context=NUM

打印后面[NUM]行

-B NUM, –before-context=NUM

打印前面[NUM]行

-C NUM, -NUM, –context=NUM

前后[NUM]行

–group-separator=SEP

定制上下文组的分隔符

–no-group-separator

取消上下文组分隔符

文件和目录选择

-a, –text

将二进制文件当成文本方式来匹配,等同于–binary-files=text

–binary-files=TYPE

如果文件开始部分的字节标示了文件存在二进制数据,将会采取[TYPE]方式来处理此文件。可选项有:[binary,without-match,text]

-D ACTION, –devices=ACTION

当输入的文件是一个设备,FIFO或者是socket的时候使用他。

-d ACTION, –directories=ACTION

如果输入的是一个文件目录的时候使用这个选项有:[skip,recurse]两个。当使用recurse就相当于-r

–exclude=GLOB

排除掉一些文件名能匹配上[GLOB]的。通配符号有: *, ?, and […],\作为转移。

–exclude-from=FILE

排除指定的文件

–exclude-dir=DIR

忽略掉目录

-I

等同–binary-files=without-match。忽略掉binary格式的文件匹配操作。

–include=GLOB

抓起文件名和[GLOB]匹配的文件,进行匹配

-r, –recursive

递归的扫描目录下全部的文件。等同于-d recurse

-R, –dereference-recursive

等同于-r

其他选项

–line-buffered

在输出上使用行缓冲。这将会导致性能损失。

-U, –binary

将文件按照binary方式对待。

-z, –null-data

按照0byte为一组数据,而不是使用新行方式来作为匹配分组数据。

正则表达式

本文就略去了,基本上和之前看到过的正则一样。

环境变量

grep操作行为还受到下面的环境变量的影响。

GREP_OPTIONS

可以隐形的配置grep的选项,比如“–binary-files=without-match –directories=skip”。当grep在运行的时候,都将会把这些选项加入。

GREP_COLORS

定制在匹配之后颜色的方案。这块的东西非常杂:
默认值:

ms=01;31:mc=01;31:sl=:cx=:fn=35:ln=32:bn=32:se=36 

退出状态

通常情况下返回0就是查找到内容了,反之为1。当错误发生时返回2,除非是在-q或者-quiet或者–silent选项被用上时,并且找到了行。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值