grep用法小结

grep 选项注解

NAME
grep, egrep, fgrep - print lines matching a pattern

SYNOPSIS
grep [options] PATTERN [FILE...]
grep [options] [-e PATTERN | -f FILE] [FILE...]

-A NUM --after-context=NUM
除了打印本身匹配的行外,别外打印出匹配行后的 NUM 行,多组匹配之间用 -- 分割。
FILE: text
mole-mac ~$ cat text
a
b
c
a
f
c
mole-mac ~$ grep -A 1 '^a' text
a
b
--
a
f

-B NUM, --before-context=NUM
参见 -A,只是打印是匹配行之前的 NUM 行。

-C NUM, --context=NUM
参见 -A,只是打印匹配行前后 NUM 行。

-a, --text
将二进制文件作为文本文件处理

-b, --byte-offset
打印匹配行之前的字节数
File: text
mole-mac ~$ cat text  
cat text
aac
bbc
jjc
ccc
aac
ffc
ccc
mole-mac ~$ grep -b '^aa' text
0:aac
17:aac

--colour[=WHEN] --color[=WHEN]
对匹配的字符进颜色显示,可选值为 `never', `always', or `auto',涉及环境变量 GREP_COLOR。

-c --count
抑制 grep 正常输出,只是输出每个文件匹配的行数。如果与 -v, --invert-match 并用,则输出非匹配行数。

-d ACTION --directories=ACTION
如果输入的文件是一个目录,使用 ACTION 处理。默认 ACTION 为 read, 意思是如果目录为原始文件则目录就会被读取。
如果 ACTION 为 skip,目录则会被略过。
如果 ACTION 为 recurse,grep 则会递归读取每个目录下的所有文件,这一行为等同于 -r 显项。

-E --extended-regexp
将 PATTERN 解为扩展正则表达式。

-e PATTERN --regexp=PATTERN
对于以 - 开头 PATTERN 起保护作用。

-F --fixed-strings
将 PATTERN 解释以换行符隔开多组字符串(注意:只是字符串,元字符在此处只作字符串解释),只要其中一个表达式能匹配,则该行就能匹配。
mole-mac test$ grep -F "a.c$
bb
c " text
aac
bbc

-f FILE --file=FILE
从文件中获取 PATTERN,一行为一个表达示。空文件表示0个表达示,所以什么也不匹配。

-G, --basic-regexp
将 PATTERN 解释为基本表达式,grep 默认为此情况。

-H, --with-filename
输出每个匹配行所在的文件。

-h --no-filename
当对多个文件进行查找时,此选项可以不输出文件名

-i, --ignore-case
匹配时忽略大小写。

-L, --files-without-match
输出没有匹配行的文件名,与 -l 相反。

-l, --files-with-matches
输出有匹配行的文件名,与 -L 相反。

-m NUM, --max-count=NUM
当匹配NUM行后,grep 不再对文件其余部分继续匹配。如果与-v连用,则刚好相反。

--mmap
用 mmap 系统调用取代默认的 read 系统调用,有时可提高性能,但可能会产生一些副作用。

-n, --line-number
在每行匹配的开头输出此行在文件中的行号。

-o, --only-matching
仅仅输出匹配 PATTERN 的字符串,而不是整行。

--label=LABEL
Displays input actually coming from standard input as input coming from file LABEL.  This is especially useful for tools  like zgrep, e.g.  gzip -cd foo.gz |grep --label=foo something

--line-buffered
打开行缓冲,提高性能。

-P, --perl-regexp
将 PATTERN 作为 perl 规则的表达式进行解释。如果对 perl 或 php 语言比较熟悉,值得用此选项。

-q, --quiet, --silent
不输任何信息,如果匹配到,则返回0,否则返回 1。在编写 shell 脚本时比较有用,通过 $? 获取结果值。

-R, -r, --recursive
递归匹配目录下的每个文件。

--include=PATTERN
grep 递归读取目录下能够匹配 --include=PATTERN (PATTERN,只是shell简单的文件元字符扩展) 表达式的文件作为输入文件。

--exclude=PATTERN
与 --include=PATTER 相反

-U, --binary
除了在window平台用一定用处外,在其它类 unix 平台下无用。

-u, --unix-byte-offsets
与 -U --binary 差不多。

-V, --version
版本信息。

-v, --invert-match
反转匹配,捕获非匹配。

-w, --word-regexp
类似于正则表达式中的 \b 单词边界,设置此选项后,就是在每行中某个词要与 PATTERN 完全匹配;不匹配包含该词的行。

-x, --line-regexp
与 -w 类似,只不过这里要匹配整个行。

-y     Obsolete synonym for -i.

-Z -NULL 类似于find -print0 选项。

grep 正则表达式与 perl 相似。

posted on 2011-12-19 13:15  生活费  阅读(855)  评论(0编辑  收藏  举报

导航