linux正则表达式基本用法

标准正则表达式

^ 匹配行的开始。

$ 匹配行的结尾

. 匹配单个字符(除行尾)

[] 匹配字符集

$ echo -e “Call\nTall\nBall” | sed -n ‘/[CT]all/ p’
Call
Tall

[^] 排除字符集

$ echo -e “Call\nTall\nBall” | sed -n ‘/[^CT]all/ p’
Ball

[-]字符范围。

$ echo -e “Call\nTall\nBall” | sed -n ‘/[C-Z]all/ p’

Call
Tall

? ,+ ,*

分别对应0次到1次,一次到多次,0次到多次匹配。

{n} ,{n,} ,{m, n}

精确匹配N次,至少匹配N次,匹配M-N次

或操作。

echo -e “str1\nstr2\nstr3\nstr4” | sed -n ‘/str(1|3)/ p’

str1
str3
Shell常见通配符:

通配符

含义

实例

匹配 0 或多个字符

a*b a与b之间可以有任意长度的任意字符, 也可以一个也没有, 如aabcb, axyzb, a012b, ab。

?

匹配任意一个字符

a?b a与b之间必须也只能有一个字符, 可以是任意字符, 如aab, abb, acb, a0b。

[list]

匹配 list 中的任意单一字符

a[xyz]b a与b之间必须也只能有一个字符, 但只能是 x 或 y 或 z, 如: axb, ayb, azb。

[!list]或[^list]

匹配 除list 中的任意单一字符

a[!0-9]b a与b之间必须也只能有一个字符, 但不能是阿拉伯数字, 如axb, aab, a-b。

[c1-c2]

匹配 c1-c2 中的任意单一字符 如:[0-9] [a-z]

a[0-9]b 0与9之间必须也只能有一个字符 如a0b, a1b… a9b。

[!c1-c2]或[^c1-c2]

匹配不在c1-c2的任意字符

a[!0-9]b 如acb adb

{string1,string2,…}

匹配 sring1 或 string2 (或更多)其一字符串

a{abc,xyz,123}b 列出aabcb,axyzb,a123b

猜你喜欢

转载自blog.csdn.net/CyyMusic/article/details/89423812