Grep(Global search REgular exPRession and Print out the line)搜索以 FILE 命名的文件输入,或者是标准输入,寻找含有与给定的模式 PATTERN 相匹配的内容的行,默认情况下, grep 将把含有匹配内容的行打印出来。
Grep有两种变种程序,egrep和 fgrep,egrep就相当于 grep -E,fgrep则相当于grep -F
Synopsis
grep [options] PATTERN [FILE...]
grep [options] [-e PATTERN | -f FILE] [FILE...]
选项 Options
- -A num 打印出紧随匹配的行下文的num行,在相邻的匹配组之间用--分割
- -B num 打印出匹配行的上文的num行,在相邻的匹配组之间用--分割
- -C num 打印出匹配行的上文和下文各num行,在相邻的匹配组之间用--分割
- -b 在输出匹配的行前面打印出当前行在输入文件中的字节偏移量
- -c 只会打印出匹配行的总数,与-v联用,为不匹配行的总数
- --color=[color] 匹配周围的颜色标记,color可以是always,nerver,auto
- -E 扩展的正则表达式
- -F 将模式PATTERN视为一个固定的字符串的列表,用新行分隔,只要匹配其中之一即可
- -P 将模式PATTERN视为一个Perl正则表达式
- -G 将模式PATTERN视为一个基本的这则表达式,这是默认的
- -f file 从文件file中获取模式,每行算一个模式,空文件0个模式
- -H 为每个匹配行打印文件名
- -h 当搜索多个文件的时候,禁止在输出行前面加上文件名
- -i 忽略模式PATTERN和输入文件中的大小写的分别
- -a 不要忽略二进制文件
- -L 禁止通常的匹配输出,它会输出每个不会产生输出的输入文件的名字,它在对文件进行扫描时在遇到第一个匹配时停止
- -I (忽略二进制文件)禁止通常的匹配输出,他只会输出每个会产生输出的输入文件的名字,它在对文件进行扫描时在遇到第一个匹配时停止
- -m num 在找到num个匹配行之后,不在读这个这个文件。如果输入是来自一个普通文件的标准输入,并且已经输出了 num个匹配的行, grep 保证标准输入被定位于退出时的最后一次匹配的行之后,不管是否指定了要输出紧随的下文的行。这样可以使一个调用程序恢复搜索。当 grep 在 num个匹配的行之后停止,它会输出任何紧随的下文的行。当使用了 -c 或 --count 选项的时候, grep不会输出比 NUM 更多的行。当指定了 -v 或 --invert-match 选项的时候, grep 会在输出NUM 个不匹配的行之后停止。
- -n 在输出的每行前面加上它所在文件中的行号
- -o 只显示匹配行中与PATTERN相匹配的部分
- -q 安静,不输出任何东西,如果找到任何匹配的内容就会立即意以状态值0退出
- -R,-r 递归读取目录下的所有文件
- --include=PATTERN 仅仅在搜索匹配PATTERN的文件时在目录中递归搜索
- --exclude=PATTERN 在目录中递归搜素,但是跳过匹配PATTERN的文件
- --exclude-dir=Path 忽律文件夹
- -V 打印grep版本号
- -v 取反,只选择不匹配的行
基本正则表达式的元字符
.------------- 匹配任意单个字符
[]------------- 匹配指定范围内的任意单个字符
[^]------------- 匹配指定范围内的任意单个字符
[:lower:]------------- 所有小写字母
[:upper:]------------- 所有大写字母
[:alpha:]------------- 所有字母
[:alnum:]------------- 所有数字和字母
[:digit:]------------- 所有数字
[:space:]------------- 所有空白字符
[:punct:]------------- 所有标点符号
*------------- 任意次
/?------------- 0或1次
/+------------- 1或多次;
/{m/}------------- 精确限制为m次
/{m,n/}------------- 至少m次,至多n次,[m,n]
/{0,n/}------------- 至多n次
/{m,/}------------- 至少m次
^------------- 行首锚定,用于模式的最左侧
$------------- 行尾锚定,用于模式的最右侧
/<或者/b------------- 词首锚定,用于表示单词的模式的左侧
/>或者/b------------- 词尾锚定,用于表示单词的模式的右侧
^$------------- 空白行
()
|
Fgrep
就是把所有的字母都看作单词,也就是说,正则表达式中的元字符表示回其自身的字面意义,不再特殊。
Egrep
egrep改良了许多传统 grep 不能或不便的操作,如:
grep 中的?和+要写成/?,/+, 但 egrep 不用
grep 不支持a|b或 (abc|xyz) , 但 egrep 则可以
grep 在处理次数匹配x{n,m} 时, 要用 /{ 与 /} 处理,egrep 则不用
。。。只知道这么多了,欢迎补充!