2014年5月9日星期五

Linux_039:常用命令之十:grep

grep(Global Regular Expression Print)是强大的文本搜索命令,支持使用正则表达式搜索文本,并把匹配的行打印出来。
与find命令不同,grep是按关键字查找匹配文本,而find是查找文件。
命令格式:grep [option] pattern file
pattern如果有空格,必须使用单引号引起来。
file可以是多个,用空格分开。

以下总结一些常用的例子:

1.  从文件中查找关键词
(1)grep 'linux' test.txt
从文件test.txt中查找字符串linux。
(2)grep -n 'linux' test.txt test2.txt
从文件test.txt和test2.txt中查找字符串linux,并打印所在行数。
(3)grep -i 'Linux' test.tx
从文件test.txt中查找字符串Linux,忽略大小写。
(3)grep -c '^processor' /proc/cpuinfo
从文件/proc/cpuinfo中查找以processor开头的字符串,并输出统计数量。

2. 不显示含有关键词的结果
(1)netstat -an | grep 61616 | grep -v LISTEN
查找含有61616的结果,并过滤含有LISTEN的结果。
(2)ps -ef | grep ssh | grep -v grep
查找含有ssh的结果,并过滤含有grep的结果。
(3)grep -v '#' /etc/hosts
查找/etc/hosts中所有不含#的行的列表。

3. 显示与关键词匹配的行
(1)cat test.txt |grep ^u
查找以u打头的行。
(2)cat test.txt |grep hat$
查找以hat结尾的行。
(3)cat test.txt |grep -E "ed|at"
查找含有ed或at的行。

4. 显示与关键词匹配的行以及前后的行
(1)grep -A 4 admin jetty-realm.properties
显示jetty-realm.properties含有admin的行,以及下面4行。
(2)grep -B 4 admin jetty-realm.properties
显示jetty-realm.properties含有admin的行,以及上面4行。
(3)grep -C 4 admin jetty-realm.properties
显示jetty-realm.properties含有admin的行,以及上面和下面4行。

5. 搜索子目录与关键字匹配的文件内容行
(1)grep -d skip magic /usr/src/linux/Documentation/*
查找当前目录下(不包括子目录)中含有magic的文件(打印所在的行)。
(2)grep -r magic /usr/src/linux/Documentation/*
查找当前目录下(包括子目录)中含有magic的文件(打印所在的行)。
(3)grep -n -R --include="*.txt" 1099 .
查找当前目录下(包括子目录)中含有1099的文件(打印所在的行,包括行号)。
(4)grep -l delete projects/*
查找当前目录下(不包括子目录)中含有delete的文件名称列表。

参考文献:
1. http://www.cnblogs.com/peida/archive/2012/12/17/2821195.html
2. http://blog.csdn.net/unbutun/article/details/6326598

没有评论: