linux 上强大的字符串匹配工具详解 -grep
1. grep 是什么
grep 是用于匹配输入数据中符合条件的字符串的工具,其匹配过程支持正则表达式,因而匹配能力非常强大。
grep 可以从文件或者标准输入设备中读取数据,若不指定任何文件名称,或是所给予的文件名为 -
,则 grep 会从标准输入设备读取数据,否则从文件读取数据进行匹配。
2. 怎么用
grep 的命令格式如下:
3. 能匹配什么
我们先来看看 grep 能匹配什么,也就是 pattern
参数支持哪些形式。
3.1 普通全匹配
这也是最普通的字符串匹配了,直接匹配 pattern
所指的字符串。例如,
3.2 正则表达式匹配
我们上面也说到了,grep强大的匹配能力就在于其支持正则表达式,下面我们来看看 grep 支持的正则表达式语法有哪些。
首先,grep 默认支持的是以下正则表达式。
位置限定匹配
匹配行开头:^
匹配a开头的行,注意是要该行的开头是a才会匹配。如果不是在开头出现,即使中间出现了也不会匹配该行。
匹配行结尾:$
匹配a结尾的行,注意是要该行的结尾是a才会匹配。
匹配单词开头:\<
匹配单词结尾:\>
单词锁定匹配:\b
字符匹配
次数限定匹配
拓展匹配模式
除了上面默认支持的模式之外,grep 还支持拓展匹配模式,拓展匹配模式要加参数 -E
,支持的拓展匹配模式如下:
注意点
对于标准grep,如果在扩展元字符前面加\,grep会自动启用扩展选项-E。例如,
当我们想要把上面的匹配模式所用到的字符当做普通字符来匹配,需要用到转义字符"\\",不过如果这些特殊字符是位于"[]"当做的时候,大部分都会自动转义为普通字符了,除了"-"或者"^"等极少数字符以外。
4. option参数
了解了 grep 能匹配哪些数据之后,我们再来了解下 grep 可用的参数,grep 的参数主要用来影响查找的过程以及打印结果的。
4.1 影响查找过程
4.2 影响打印结果
参考资料
https://zh.wikipedia.org/wiki/Grep#egrep%E5%92%8Cfgrep
https://www.runoob.com/linux/linux-comm-grep.html
https://www.cnblogs.com/kevingrace/p/9299232.html
版权声明: 本文为 InfoQ 作者【X先生】的原创文章。
原文链接:【http://xie.infoq.cn/article/ec5c5fa37f8b979c307ddac5b】。文章转载请联系作者。
评论