在shell中使用正则表达式
引言
本篇文章主要是针对shell中的 grep
和 egrep
的讲解,对于正则表达式的规则本身并没有太多的内容。在阅读本篇文章之前,读者应该对正则表达式有个大致的了解。
grep
命令
grep
命令是linux终端中最常用的命令之一,它的全称是“global regular expression print”,从字面上理解, grep
可以用来进行正则表达式匹配。
常用选项
使用一些选项命令能够更加方便地进行匹配-i
忽略大小写-v
进行逆向匹配-n
打印行号--color=auto
彩色输出结果
支持的表达式
正则表达式有很多规则, grep
支持的有如下:
在每一行的开始
grep "^GUN" GPL-3
在每一行的结尾
grep "and$" GPL-3
匹配任意字符
grep "..cept" GPL-3
在指定的字符中进行匹配
grep "t[wo]o" GPL-3
在指定的字符中进行逆向匹配
grep "[^c]ode" GPL-3
使用范围来指定字符
grep "^[A-Z]" GPL-3
限定出现的次数为0次或0次以上
grep "([A-Za-z ]*)" GPL-3
egrep
命令
egrep
的含义为“extended grep”,相对于 grep
有更多的正则表达式特性。同样,可以在使用 grep
时增加 -E
参数获得相同的效果。
表达式分组
使用括号能够将表达式进行分组,下面的任何一个都能够实现这个效果
grep "\(grouping\)" file.txt
grep -E "(grouping)" file.txt
egrep "(grouping)" file.txt
表达式进行中多选一
egrep "(GPL|General Public License)" GPL-3
匹配的重复次数为0次或0次以上,与 *
限定符类似,但是 ?
可以作用于一组字符
egrep "(copy)?right" GPL-3
指定匹配的重复次数
egrep "[AEIOUaeiou]{3}" GPL-3