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
POSIX兼容的正则
主要包含
POSIX定义的character class只能在中括号内使用。例如,[[:upper:]ab]匹配大写字母字符和”a”,”b”。
[:word:]是附加的非POSIX的character class,[:word:]表示[:alnum:]和下划线。
元字符
\s 匹配单个空白内容
$ echo -e "Line\t1\nLine2" | sed -n '/Line\s/ p'
Line 1
\S 匹配单个非空白内容。
\w 单个单词、
\W 非单词。
参考http://blog.jobbole.com/109088/http://blog.jobbole.com/109088/
https://www.cnblogs.com/lovers/p/POSIXREGEX.html