Linux grep命令

来源:互联网 发布:linux终端退出服务器 编辑:程序博客网 时间:2024/06/18 14:39

1、Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来。grep全称是Global Regular Expression Print,表示全局正则表达式版本,它的使用权限是所有用户。

2、grep使用正则表达式:如下图示:



3、grep在shell中很有用,它总会返回一个退出状态,以说明是否定位到要查找的模式或者文件。如果找到了模式,grep返回的推出状态是0,表示成功,如果找不到模式,grep返回1作为退出状态,而当找不到要搜索的文件时,grep返回的退出状态是2(其它查找模式的UNIX工具,例如sed 和awk,不适用退出状态来说明查找模式成功与否,它们只有在命令中出现语法错误时才报告失败)。

例1: grep NW datafile

说明:打印 datafile 中所有包含正则表达式 NW 的行。

例2: grep NW d*

说明: 打印所有以 d 开头的文件中,包含正则表达式 NW 的所有行。shell把 d* 扩展为所有名字以 d 开头的文件。

例3: grep  '^n' datafile

说明: 打印所有以字母 n 开头的行。托字符(^)是句首定位符。

例4:  grep ‘4$’ datafile 

说明: 打印所有以数字 4 结尾的行。美元符($)是行尾定位符。

例5: grep TB Savage datafile

说明: 第一参数是模式,其余参数都是文件名,grep 将在Savage 和datafille这两个文件中查找 TB。如果查找TB Savage,则应该如下: grep 'TB Savage' datafile ,如果不适用引号(这个例子中,使用单引号和双引号都可以),TB和Savage之间的空格将导致grep 在文件Savage和datafile中查找TB。

例6: grep '5\..' datafile

说明: 打印所有包含数字 5,后跟一个句点,再跟一个任意字符的行。句点这个元字符通常代表单个字符,除非它被反斜杠转义。句点被转义之后就不再是特殊的元字符。

例7:grep '\.5' datafile

说明:打印所有包含表达式 .5的行。

例8:grep '^[we]' datafile 

说明: 打印所有以字母w或e开头的行。脱字符(^)是句首定位符,方括号中任意一个字符都可以被匹配。

例9:grep '[^0-9]' datafile 

说明: 打印包含非数字字符的所有行。

例10:grep '[A-Z][A-Z] [A-Z]' datafile

说明:打印所有包含两个大写字符,后跟一个空格和一个大写字母的行。如TB Savage和 AM Main。

例11:grep '[a-z]\(9\)' datafile

说明: 打印所有出现至少9个小写字母连在一起的行。例如northwest 、southwest等。

例12:grep '\<north' datafile

说明: 打印所有包含以north开头的单词的行。”\<”是词首定位符。

例13:grep '\<north\>' datafile

说明:打印所有包含单词north的行。“\<”是词首定位符,“\>”是词尾定位符。

例14:grep '\<[a-z].*n\>' datafile 

说明: 打印所有包含以小写字母开头,以n结尾,中间有任意多个字符组成的单词的行。注意,.*代表任意字符,包括空格。


例15:grep -n '^south' datafile 

说明:选项 -n 在找到指定模式的行前面加上其行号再一并输出。

例16:grep -i 'pat' datafile 

说明:选项 -i 关闭大小写敏感性。表达式pat包含任意大小写的组合都符合。

例17:grep -v 'Suan Chin' datafile

说明:选项 -v 打印所有不含模式Suan Chin 的行。选项 -v 可用来删除出入文件中特定条目。如果要真正 删除这些条目。就要把grep的输出宠定向到一个临时文件,然后把这个临时文件的名字改成原始文件的名字。如:

grep -v 'Suan Chin' datafile >temp

mv temp datafile

必须用临时文件来重定向原则datafile的输出。

例18:grep -l 'SE' *

说明:选项 -l 使grep只输出含模式的文件名,而不输出文本行。

例19: grep -c 'west' datafile 

说明: 选项 -c 让grep 打印含有模式的行的数目。这个数字并不代表模式出现的次数。例如技术west在某行出现了3次,这行也只计一次。

例20:grep -w 'north' datafile

说明:选项 -w 使grep只 查找作为一个词,而不是词的一部分出现的模式。这个例子只打印包含 词north的行,而不打印那些在northwest、northeast等出现的north的行。 


grep与管道

例21:ls -l | gerp '^.'

说明:ls命令的输出通过管道传给grep。输出结果中一字母 d 开头的所有行都被打印,即所有目录被打印。


原创粉丝点击