一、简介:
grep (global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。Unix的grep家族包括grep、egrep和fgrep egrep和fgrep的命令只跟grep有很小不同。egrep是grep的扩展,支持更多的re元字符, fgrep就是fixed grep或fast grep,它们把所有的字母都看作单词,也就是说,正则表达式中的元字符表示回其自身的字面意义,不再特殊。linux使用GNU版本的grep。它功能更强,可以通过-G、-E、-F命令行选项来使用egrep和fgrep的功能。
二、grep常规用法
-c:显示匹配行的数量
-i:不区分大小写
-n:在输出符合要求的行的同时显示行号
-v:输出显示不符合要求的行,即反向选择
-r:会把目录下所有的文件全部遍历
–color=auto:把匹配到的关键词加上颜色显示
-A:后跟一个数字n,表示输出显示符合要求的行以及下面n行
-B:后跟一个数字n,表示输出显示符合要求的行以及上面n行
-C:后跟一个数字n,表示打印符合要求的行以及上下各n行
举例说明:
1、将/etc/passwd目录下,出现 root 的行取出来
# grep root /etc/passwd
或者 # cat /etc/passwd | grep root
2、过滤出带有“root”关键词的行并输出行号
grep -n ‘root’ 1.txt
3、过滤出不带有“root”关键词的行并输出行号
grep -nv ‘root’ 1.txt
4、将/etc/passwd,将没有出现 root 和nologin的行取出来
# grep -v root /etc/passwd | grep -v nologin
5、用 dmesg 列出核心信息,再以 grep 找出内含 eth 那行,在关键字所在行的前两行与后三行也一起捉出来显示
# dmesg | grep -n -A3 -B2 –color=auto ‘eth’
另:在关键字的显示方面,grep 可以使用 –color=auto 来将关键字部分使用颜色显示。但是如果每次使用 grep 都得要自行加上 –color=auto 又很麻烦,可以使用 alias来处理。做法:在 ~/.bashrc 内加上这行:
alias grep=’grep –color=auto’
再以source ~/.bashrc 来立即生效即可~这样每次运行 grep就会自动加上颜色显示。
6、根据文件内容递归查找目录
# grep
‘energywise’ *