- 论坛徽章:
- 0
|
Grep简介
grep工具集由命令grep、egrep和fgrep组成的。grep命令在文件中全局查找指定的正则表达式,并且打印所有包含该正则表达式的行。egrep和fgrep都只是grep的变体。
grep命令在一个或多个文件查找某个字符模式。如果这个模式中包含空格,就必须要用引号把它括起来,要不要就会把空格之后的字符做为文件名输入。grep将匹配的结果输出发送到屏幕上,不会对原文件进行任何的修改。
l 命令格式
#grep word filename1 filename2 filename3
l 事例-1
#grep lvdbing /etc/passwd
l 说明
grep将在文件/etc/passwd中查找模式lvdbing,如果查找成功就把相应的行显示在屏幕上,如果没有找到就没有显示在屏幕上,如果是找不到指定的文件,就会报告错误。grep还会把执行状态返回,如果查找成功并且有找到匹配的模式,则返回0,如果查找成功但没有找到匹配的模式,则返回1,如果没有找到指定的文件,则返回2。
l 事例-2
#ps aux | grep lvdbing
l 说明
ps命令的输出通过管道送到grep,然后匹配到lvdbing的行都被输出来。
Grep的选项和元字符
Grep使用的正则表达式元字符
元字符
功能
示例
匹配对象
^
行首定位符
‘^man’
匹配所有以man开头的行
$
行尾定位符
‘man$’
匹配所有以man结尾的行
.
匹配单个字符
‘m..n’
匹配包含一个m,后跟两个字符,再跟一个n的行
*
匹配0个或多个重复的位于星号前的字符
‘*man’
匹配包含跟在0个或者多个空格的模式的man的行
[]
匹配一组字符中任一个
‘[Mm]an’
匹配包含Man或man的行
[x-y]
匹配指定范围内的一个字符
‘[A-Z]an’
匹配后面跟着an的一个A至Z之间的字符
[^]
匹配不在指定组内的字符
‘[^A-Z]’
匹配不在范围A至Z之间的任意一个字符
\
用来转义元字符
‘man\.’
匹配包含man,后面跟一个点(如果不转义的话则是匹配一个任意字符)
\
词首定位符
‘\
匹配包含以man开头的词的行
\>
词首定位符
‘man\>’
匹配包含以man结尾的词的行
\(..\)
匹配稍后将要使用的字符的标签
‘\(man\)age’
最多可以使用9个标签,模式中最左边的标签是第一个。例如,模式man被保存为标签1,之后可以用\1表示。
x\{m\}或
x\{m,\}或
x\{m,n\}
字符x的重复出现:m次、至少m次、至少m次且不超过n次
‘n\{5\}’
‘n\{3,\}’
‘n\{3,5\}’
匹配包含3~5个连续的字母n的行
Grep 的选项
选项
功能
-b
在每一行前面加上其所在的块号,根据上下文定位磁盘块时可能会用到
-c
显示匹配到的行的数目,而不是显示行的内容
-h
不显示文件名
-i
比较字符时忽略大小写的区别
-l
只列出匹配行所在文件的文件名,文件名之间用换行符分隔
-n
在每一行前面加上它在文件中的相对行号
-s
无声操作,即只显示报错信息,以检查退出状态
-v
反向查找,只显示不匹配的行
-w
把表达式作为词来查找,就好象它被\和\>所包含的一样。只适用grep
本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/20294/showart_445581.html |
|