全部博文(842)
分类: LINUX
2012-05-14 19:25:06
grep是一个最初用于UNIX操作系统的命令行工具。在给出文件列表或标准输入后,grep会对匹配一个或多个正则表达式的文本进行搜索,并只输出匹配的文本。语法为:grep [选项] 字符模式 [文件名1,文件名2]。不输入文件名则从标准输入读取内容。
grep使用正则表达式元字符基本集,包括:
^:匹配行首;
$:匹配行尾;
.:匹配任意字符;
*:匹配0个或多个任意字符;
[]:匹配指定范围内的其中一个字符;
[^]:匹配不在指定范围内的字符;
\<:匹配单词首。(在linux终端上敲命令时,需要多使用一个反斜杠,如:grep abcd\\< filename,因为第一个反斜杠用于转义一个shell的反斜杠。)
\>:匹配单词末。
\{m\}:匹配前一字符的m次出现。
\{m,\}:匹配前一字符的至少m次出现。
\{m,n\}:匹配前一字符至少m次,至多n次出现。
grep的选项包括:
-#:同时显示匹配行上下的#行,#表示数字;
-b:在每行前打印字符偏移量;
-c:只打印匹配的行数,不显示匹配的内容;
-f FILE:从FILE文件中提取模式;
-h:当搜索多个文件时,不显示匹配文件名前缀;
-i:忽略大小写;
-q:取消显示,只返回退出状态,0表示找到了匹配的行;
-l:打印匹配模式的文件清单;
-L:打印不匹配模式的文件清单;
-n:在匹配的行前面打印行号;
-s:不显示关于不存在或无法读取文件的错误信息;
-v:反检索,只显示不匹配的行;
-w:如果被\<和\>引用,就把表达式作为一个单词搜索;
-V:显示软件版本信息。
grep的退出状态存储在$?里,通过ehco $?可以查看,搜索成功值为0,搜索不成功值为1,文件不存在则返回2。
egrep(extend grep)命令与grep相似,执行效率比grep高,但需要占用较大内存空间。egrep使用正则表达式元字符的扩展集,包括:
+:匹配一个或多个前一字符;
?:匹配一个或0个前一字符;
a|b|c:匹配a或b或c。
():分组符号;
x{m}、x{m,}、x{m,n}:作用同x\{m\}、x\{m,\}、x\{m,n\}。
grep -E打开对元字符扩展集的支持,实现与egrep相同的功能。
fgrep:与grep相似,占用空间比egrep小,速度比grep快,但不识别正则表达式。