grep中的正则表达式
时间:2019-11-20 08:53:30 来源:igfitidea点击:
在grep中,如何使用正则表达式?
在Linux shell中,如何使用正则表达式搜索字符串?
GNU grep是所有Linux系统上的默认设置。 grep用于在文件中搜索字符串。其指出正则表达式模式匹配。
在grep中的正则表达式
正则表达式用于设置匹配的模式。
模式是一种字符序列。
例如:
^w1 w1|w2 [^ ] foo bar [0-9]
分别表示:
- 以w1开头
- w1或者w2
- 匹配非控股
- 匹配单词foo
- 匹配单词bar
- 匹配数字0到9
三种正则表达式
grep可以理解三种不同类型的正则表达式语法,如下所示:
- 基本(BRE)
- 扩展(ERE)
- perl(PCRE)
grep正则表达式示例
在/etc/passswd中搜索Hyman
grep 'Hyman' /etc/passwd
搜索Hyman单词(不区分大小写)
grep -i -w 'Hyman' /etc/passwd
搜索Hyman或者ma
grep -E -i -w 'Hyman|ma' /etc/passwd
使用扩展的正则表达式:
egrep -i '^(linux|unix)' filename
如何匹配点字符
在正则表达式中,字符点号有特殊含义,即匹配任何字符。
如果要匹配点号,那么需要进行转义。(在前面加上(反斜杠)),例如
grep 'read.txt' demo.txt grep 'read\.txt' demo.txt
第一个命令匹配read后面跟着任意字符的字符串,比如readatxt ,readbtxt。
第二个命令匹配read.txt 字符串
锚点
可以使用^和$来强制正则表达式分别仅在行的开头或结尾进行匹配。
例如,仅匹配以Hyman开头的行:
grep ^Hyman /etc/passwd
仅匹配以单词Hyman开头的行, 所以Hymanage将不会被匹配,因为不是Hyman单词
grep -w ^Hyman /etc/passwd
匹配以foo结尾的行:
grep 'foo$' filename
匹配仅包含foo的行:
grep '^foo$' filename
在shell中搜索空白行:
grep '^$' filename