标签:
一. grep的来源
通过ex编辑器来查找某个字串:
:/pattern/p
其中p是打印,包含字符串pattern的第一行将被打印;如果需要打印包含pattern的所有行,可以这样:
:/g/pattern/p
当g出现在pattern前面时表示查找所有的行或者替换所有的行。
而被查找的模式pattern称作正则表达式regular expression,因此用简写RE来替换pattern后就是:
:g/RE/p
这就是grep的来历,即它表示“全局查找正则表达式并打印结果行“
二. grep如何工作
1. 命令格式
grep word filename filename..
其中word是我们要查找的字符串模式;模式后面所有单词都被视为文件名。
查找到模式后,将结果所在行打印到屏幕;整个过程它不会修改任何文件。
2. 输入文件
grep的输入可以来自标准输入或者管道,而不仅仅是文件。
例如:
(1 )管道输入
ps -ef | grep root
(2) 标准输入
grep root (\n)
test root administrator
3. 元字符和选项
grep支持的元字符有如下:
^ : 行首定位符
$: 行尾定位符
.: 匹配单个字符
*: 匹配0个或多个
[]: 匹配一组字符中的任意一个
[x-y]: 匹配制定范围内的一个字符
[^] :匹配不在指定范围内的字符
\: 转意字符
\<: 词首定位符
\>: 词尾定位符
\(..\): 匹配稍后将要使用的字符的标签
x\{m\}或x\{m,\}或x\{m,n\} : 字符x的重复出现:m次,至少m次,至少m次但不超过n次
grep常用的选项包括:
-b 在每一行前面加上其所在的块号,根据上下文定位磁盘块时可能会用到
-c 显示匹配到的行的数目,而不显示行的内容
-h 不显示文件名
-i 比较字符时忽略大小写的区别
-l 只列出匹配行所在的文件名,每个文件名只列一次,文件名之间用换行符分隔
-n 在每一行前面加上它在文件中的相对行号
-s 无声操作,只显示报错信息,以检查退出状态
-v 反向查找,只显示不匹配的行
-w 把表达式作为词来插座,就像它被\<和\>所包含一样
4. grep的退出状态
grep退出时会返回一个状态,以表示是否定位到需要查找的模式或文件。
如果找到模式,grep退出状态为0,表示成功,否则返回1;
当grep没有找到制定的搜索文件时,grep返回状态2。
在执行完grep查找后,在sh中可以通过“echo $?”来查看其推出状态。
标签:
原文地址:http://www.cnblogs.com/liuhailong0112/p/5801257.html