天天看点

17、grep(Global Regular Expression Print)常用参数

1、Usage: grep [OPTION]... 'PATTERN' [FILE]...

Search for PATTERN in each FILE or standard input.

PATTERN is, by default, a basic regular expression (BRE).

Example: grep -i 'hello world' menu.h main.c

2、常用参数【option】

1)-E,--extended-regexp

采用扩展表示式去解释样式。

-i, --ignore-case        ignore case distinctions

-v, --invert-match        select non-matching lines

ps -ef | grep '^td*' | grep -v 'grep' | wc -l //-v 'grep'的排除项可以多个,用|连接

ps -aux

2)-c :打印匹配的行数

-n:打印包含匹配项的行和行标

-l:查询多文件时只输出包含匹配字符的文件名。

-r:递归查询子目录

-q,-quiet:取消显示,只返回退出状态。0表示找到了匹配的行。

-?:显示匹配行上下?行,如:grep -2 pattern filnam 显示匹配行的上下2行(为-C选项)

-s,–silent:不显示关于不存在或者无法读取文件的错误信息

-w,--word-regexp,匹配整个单词,cat test | grep -w zhan

-x:匹配整行。

-H, --with-filename:当搜索多个文件时,显示匹配文件名前缀

-o Print only the matched (non-empty) parts of a matching line, with each such part on 

a separate output line.

grep -l pattern files :只列出匹配的文件名。

grep -L pattern files :列出不匹配的文件名。

grep -w pattern files :只匹配整个单词,而不是字符串的一部分(如匹配'magic',而不是'magical')。

grep pattern1 | pattern2 files //或关系

grep pattern1 files | grep pattern2 //相当于与关系

3、pattern

正则表达式

4、示例

grep -c '^$' test.txt  //查找空行的行数

grep 'test' d*  //显示所有以d开头的文件中包含test的行。

grep 'test' aa bb cc //显示在aa,bb,cc文件中匹配test的行。

grep '[a-z]\{5\}' aa //显示所有包含每个字符串至少有5个连续小写字符的字符串的行。

grep '\<man' me.txt //要求词首是man

grep '\<man\>' me.txt //只匹配man

grep -rin me.txt `ls | grep -vE 'bin|boot|dev|initrd|lib'` //

cat test |grep '^\(root\|zhang\)' //匹配首单词是root或zhang的行

5、复杂一点

$ grep 'w\(es\)t.*\1' aa

    如果west被匹配,则es就被存储到内存中,并标记为1,然后搜索任意个字符(.*),这些字符后面紧跟着另外一个es(\1),找到就显示该行。如果用egrep或grep -E,就不用”\”号进行转义,直接写成’w(es)t.*\1′就可以了。

默认情况下,'grep'只搜索当前目录;如果此目录下有许多子目录,用:

明确要求搜索子目录:grep -r

或忽略子目录:grep -d skip

来进行。

6、[split] 分割文件 [paste] 以行连接文件 [join] 以字段连接文件 [grep] 查询文字 [uniq] 过滤重复部分显示文件内容 [tr] 替换文字 [sed] 替换文字

7、我们发现,grep的很多选项的字母大小写具有相反的含义,如-H表示搜索多文件时列出匹配行前的文件名,而-h则不列出;

参考

【1】 详解

<a href="http://blog.csdn.net/greytree/article/details/428532">http://blog.csdn.net/greytree/article/details/428532</a>

【2】 man手册

【7】对grep的常用命令进行了翻译,并给出了详细的例子:

<a href="http://blog.51yip.com/linux/1008.html">http://blog.51yip.com/linux/1008.html</a>

继续阅读