【Linux】grep命令的使用详解

来源:互联网 发布:国外cms 编辑:程序博客网 时间:2024/04/28 13:47

简介:
grep(global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是Linux下一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。
格式:
grep [options] filename
选项:

-a 不要忽略二进制数据。-A<显示列数> 除了显示符合范本样式的那一行之外,并显示该行之后的内容。-b 在显示符合范本样式的那一行之外,并显示该行之前的内容。-c 计算符合范本样式的列数。-C<显示列数>或-<显示列数> 除了显示符合范本样式的那一列之外,并显示该列之前后的内容。-d<进行动作> 当指定要查找的是目录而非文件时,必须使用这项参数,否则grep命令将回报信息并停止动作。-e<范本样式> 指定字符串作为查找文件内容的范本样式。-E 将范本样式为延伸的普通表示法来使用,意味着使用能使用扩展正则表达式。-f<范本文件> 指定范本文件,其内容有一个或多个范本样式,让grep查找符合范本条件的文件内容,格式为每一列的范本样式。-F 将范本样式视为固定字符串的列表。-G 将范本样式视为普通的表示法来使用。-h 在显示符合范本样式的那一列之前,不标示该列所属的文件名称。-H 在显示符合范本样式的那一列之前,标示该列的文件名称。-i 忽略字符大小写的差别。-l 列出文件内容符合指定的范本样式的文件名称。-L 列出文件内容不符合指定的范本样式的文件名称。-n 在显示符合范本样式的那一列之前,标示出该列的编号。-q 不显示任何信息。-R/-r 此参数的效果和指定“-d recurse”参数相同。-s 不显示错误信息。-v 反转查找。-w 只显示全字符合的列。-x 只显示全列符合的列。-y 此参数效果跟“-i”相同。-o 只输出文件中匹配到的部分。--color=auto 可以将找到的关键词部分加上颜色的显示。

常用命令举例:
这里写图片描述
注意grep匹配的是包含某一模式的行,而不是完全匹配某一模式的行。
grep与正则表达式:
关于正则表达式的基本介绍可以参照这篇博客:
正则表达式基础
POSIX字符:
为了在不同国家的字符编码中保持一至,POSIX(The Portable Operating System Interface)增加了特殊的字符类,如[:alnum:]是[A-Za-z0-9]的另一个写法。要把它们放到[]号内才能成为正则表达式,如[A- Za-z0-9]或[[:alnum:]]。在linux下的grep除fgrep外,都支持POSIX的字符类。
[:alnum:] #文字数字字符
[:alpha:] #文字字符
[:digit:] #数字字符
[:graph:] #非空字符(非空格、控制字符)
[:lower:] #小写字符
[:cntrl:] #控制字符
[:print:] #非空字符(包括空格)
[:punct:] #标点符号
[:space:] #所有空白字符(新行,空格,制表符)
[:upper:] #大写字符
[:xdigit:] #十六进制数字(0-9,a-f,A-F)
应用实例:
这里写图片描述
grep扩展:
egrep命令用于在文件内查找指定的字符串。egrep相当于grep -E,表⽰采⽤Extended正则表达式语法。使用的语法及参数可参照grep指令,与grep的不同点在于解读字符串的方法。 grep的正则表达式 有Basic和Extended两种规范,默认情况下使用Basic,若要使用扩展模式则需要加-E选项,而egrep则默认使用的是Extened。
另外还有fgrep命令,相当于grep - F,表⽰只搜索固定字符串⽽不搜索正则表达式模式,不会按正则表达式的语法解释后⾯的参数。

0 0