正则表达式及其应用(五) grep

grep 

grep(Globel search Regular Expression and Print out the line)全面搜索正则表达式并把行打印出来,它是一种强大的文本搜索工具,与正则表达式结合使用。

1、格式选项
grep格式:grep [选项] [模式] [文件...],它在一个或多个文件中搜索满足模式的文本行,grep的选项如下:

      

grep命令模式可以是字符串、变量或正则表达式,grep支持多文件查询如grep pattern a.txt b.txt,grep指定多个文件时可以使用通配如grep pattern ?.txt,查找a.txt、b.txt等单个字符开头的txt文件。

(1)-c选项

输出匹配字符串行的数量,默认grep打印包含模式的所有行,加上-c就只显示包含模式行的数量。如grep -c pattern *.txt。

(2)-n选项

      列出所有的匹配行,并显示行号,默认grep搜索单个文件只显示每行内容,搜索多个文件显示文件名及每行内容,加上-n将在内容前附加显示行号(查询中比较有用)。

(3)-v选项

显示不包含模式的所有行,常与-c选项配合显示不包含模式的行数。

(4)-h选项

默认下grep命令查询多个文件时,在匹配行之前显示文件名,加上-h选项,grep将不再显示文件名。

(5)-r选项

默认情况,grep只对当前目录下的文件 进行搜索,而不对子目录中的文件进行搜索。-r表示递归搜索,不仅搜索当前目录而且搜索子目录。比较有用。

(6)-w和-x选项

     grep命令支持正则表达式,正则表达式的元字符被解释成特殊的含义,-w选项使元字符不再被解释为特殊含义。例如:grep patt* a.txt,未加-w模式中的*被解析成任意字符,加上-w只搜索包含patt*字符串的文本行。

      -x选项是匹配整行,文件中整行内容与模式匹配时才输出,只有部分内容匹配也不输出。


2、grep与正则表达式结合
(1)匹配行首
      元字符"^"表示行首,^$表空白行,[^$]表示空白行的范围,前面加上"^"符号取反^[^$]表示非空白行。

(2)匹配重复字符

      匹配重复字符通常可以利用"."符号表示一个任意字符和"*"符号表示任意个任意字符来实现,不是正则表达式的规则。

(3)转义符

      匹配的目标字符串中包含元字符,需要利用转移符"\"屏蔽其意义,如grep "com\.con" *,句号"."字符是元字符,需要在之前加上转移符进行转义。

      横杠(-)字符比较特殊,它虽不属于元字符,但grep命名是由"-"字符引出的特殊字符,因此需要用转移符将其转义。

(4)POSIX字符类

为了保持不同国家的字符编码一致性,POSIX增加了特殊的字符类,grep支持POSIX字符类。

 

[:upper:]表示大写字母集合,[[:upper:]]表示匹配字符集合,grep ^[[:upper:]] a.txt,搜索以大写字母开头的文本行;grep ^[[:space:]] a.txt,搜索以空格开头的文本行。

(5)精确匹配

\<\>符号用于精确匹配,grep "\<the\>" file,精确匹配the这个单词,未加列出所有包含the字符串的行。grep命令的-w选项也可用于精确匹配。

(6)或字符

或字符"|"是扩展正则表达式中定义的,grep需要加上-E选项才能支持它,不带-E选项,会将"|"字符解析为字面意义。


3、egrep和fgrep
(1)grep命令族:grep(支持基本正则表达式)、egrep(等价grep -E)(扩展grep命令,支持基本和扩展正则表达式)、fgrep(等价grep -F)(快速grep命令,不支持正则表达式,按字符串的字面意思进行匹配)。
(2)egrep "^-+B" a.txt,查找以"-"开头且至少重复一次然后加B字符的字符串,"+"至少重复一次,"*"重复0次或无数次。

(3)grep命令功能十分强大,以代替egrep和fgrep命令。
 

本文参考 : https://blog.csdn.net/taiyang1987912/article/details/39187525

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值