sed -n -r ; -n表示quiet, 只输出匹配结果; -r表示使用正则表达式
re:
* 匹配任意
? 匹配0,1
+ 匹配>=1
[]: 匹配其中任意字符;中括号内的连续字符可以使用-, 0-9表示0,1,2,3,4,5,6,7,8,9
[^]: 匹配非中括号中的任意字符
echo "def" | sed -n -r "/d[eE]f/p" 输出:def
echo "def" | sed -n -r "/d[a]f/p" 输出:无
/b: 匹配单词边界
echo "defgh" | sed -n -r "//bdef/p" 输出:defgh
echo "defgh" | sed -n -r "/def/b/p" 输出:无
/B: 匹配单词内部, 用法基本同上
^, $分别匹配行首与行尾
字符转义:
/d 数字 /D 数字外的字符
/w 单词字符 /W 非单词字符.(包括数字。。sed试过)
/s 空白 /S 非空白
. 匹配出/n之外的任意字符
{n, [m]} 匹配n次到m次;
/de{1,3}f/ 将会匹配def, deef, deeef
| 或, /def|ghi/ 将匹配def 或者 ghi
() 分组。 通过/n引用第n组
echo "abc.com" | sed -n -r "/(/w+).(/w+)/p" 其中有两个组, 第一个组匹配abc, 第2个组匹配com
模式匹配选项
g: 匹配所有可能模式
i: 忽略大小写
m: 将串视为多行
s: 将串视为单行
x: 忽略所有空白
肯定否定匹配
/abc(?=string)/匹配abc后为string的模式, 返回的是abc
/abc(?!string)/ 匹配abc后不是string的模式, 返回的是abc