51cto博客处女作《Linux之正则表达式》

1、简介:

  grep是一个最初用于Unix操作系统的命令行工具,在Linux同样得到了广泛的使用,这个程序的名称来自Unix文本编辑器ed类似操作的命令。grep全称是Globally search for a Regular Expression and print out the line,表示在给出文件列表或标准输入后,会对匹配一个或者多个正则表达式的文本进行搜索,并只输出匹配(或者不匹配)的行或文本,Linux下所有用户皆可使用。

2、格式:

grep [OPTIONS] PATTERN [FILE...]

3、常用选项:

--color=auto:表示使用颜色填充匹配到的内容,使其高亮显示,效果如下图:

wKiom1MK8ZDzIf6gAAALBvr9NdI353.png

-v:反向匹配,显示不能被模式所匹配到的行;

使用-v选项的效果如下图:

wKiom1MK7czwsKvlAAASMmE-Y7A244.png

未使用-v选项的效果如下图:

wKiom1MLKM-T6K9OAACEQvwmW4E535.png

-i:不区分字符大小写,效果如下图:

wKiom1MK73Lz4zbSAAAujJTlIIc101.png

-o: 仅匹配被模式匹配到的字串,而非整行;

使用-o选项的效果如下图:

wKioL1MK8WmRZ2FlAAAHYtXSqCQ372.png

不使用-o选项的效果如下图:

wKiom1MK8ZCw5DHsAAAK8qUw9GE004.png

正常显示效果:

wKioL1MLGy_yQJdqAAAKDgiGO2Q266.png

-A#:#为数字,表示匹配到内容及其后边的#行,效果如下图:

wKioL1MK84rywpshAAAQ--GS69U676.png

-B#:#为数字,表示匹配到内容及其前边的#行,效果如下图:

wKiom1MK87DDWMKmAAAQHug5ZP0703.png

-C#: #为数字,表示匹配到内容及其前后的#行,效果如下图:

wKioL1MK84rDSMf_AAAXcT24oJE507.png

4、正则表达式元字符:正则表达式是一类字符所书写出来的模式(pattern),元字符:不代表字符 本身的意义,用于额外功能性的描述。

字符匹配:

.:表示匹配任意单个字符,效果如下图:

wKiom1MLJRfx_sPvAAAPQYJHnOE464.png

[]:表示匹配范围内的任意单个字符,[^]:表示匹配范围外的任意单个字符,效果如下图:

wKioL1MLJPHhJEbaAAAQYpziRho485.png

常用范围表示格式:

[0-9]:表示匹配所有数字,等同于[[:digit:]],效果如下图:

wKiom1MLJReA8J5hAAARbEcXw1k329.png

[[:lower:]]:表示匹配所有小写字母,等同于[a-z],效果如下图:

wKioL1MLJPKjr-gNAAAQ1aftBcw750.png

[[:upper:]]:表示匹配所有大写字母,等同于[A-Z],效果如下图:

wKiom1MLJReiwFXZAAARKFH8F1w217.png

[[:alpha:]]:表示匹配所有大写字母和小写字母,效果如下图:

wKioL1MLJPLQa2QdAAALIDOmovk413.png

[[:alnum:]]:表示匹配字母和数字,效果如下图:

wKiom1MLJiPC3YNSAAAK2hI6fRQ049.png

[[:punct:]]:表示匹配标点符号,效果如下图:

wKioL1MLJPKSZ_yjAAAITJ7ffiY996.png

[[:space:]]:表示匹配空白字符,由于空白字符无法显示颜色这里取非空白符测试,效果如下图:

wKiom1MLJRjwBHOvAAASHlkzJ2E486.png

次数匹配:

*:表示匹配之前的字符任意次

\?:表示匹配之前的字符0次或1次

\{m\}:表示匹配之前的字符m次

\{m,n\}:表示匹配之前的字符至少m次,至多n次

\{m,\}:表示匹配之前的字符至少m次

\{0,n\}:表示匹配之前的字符至多n次

wKioL1MLDuLR6Eo0AAApcZKbJh8796.png

位置锚定:

^:锚定行首

wKioL1MLD-aismcYAAAHjH2hO4s917.png

$:锚定行尾

wKiom1MLEAzR9Je1AAAHzQtSNN0006.png

^$:空白行

wKiom1MLEAzwtzbwAAAFRUIGy5g362.png

单词锚定:

\<char:锚定词首,等同于\bchar

char\>:锚定词尾, 等同于char\b

\<char\>:表示锚定单词,等同于\bchar\b

wKioL1MLEFjjkzLjAAALtBV7eYU986.png

分组:\(pattern\)        

引用:\(pattern\).*\1:表示引用前边分组内容

wKioL1MLEeiTvNIaAAANdWJYpME097.png

5、egrep和grep的差异:

增加的元字符

+:表示匹配前边的字符至少一次

|:表示匹配两边的任意一边,比如x|y,表示匹配x或者y

wKiom1MLGADR6hC2AAAZFuWvQhs814.png

温馨提醒:注意有无小括号的区别

变动的元字符

? :等同于grep中的\?

():等同于grep中的\(\)

{}:等同于grep中的\{\}

wKiom1MLGWiieXAPAAAiKIYlvFI423.png

你可能感兴趣的:(linux,grep,命令行工具,egrep)