eg1:
echo "<b>This</b> is what <b>I</b> meant." | sed -e 's/<.*>//g'
变成:
meant.
我们要的不是这个,而是:
This is what I meant.
幸运的是,有一种简便方法来纠正该问题。我们不输入“’<’ 字符后面跟有一些字符并以 ‘>’ 字符结束”的规则表达式,而只需输入一个“’<’ 字符后面跟有任意数量非 ‘>’ 字符并以 ‘>’ 字符结束”的规则表达式。这将与最短、而不是最长的可能性匹配。
新命令如下:
echo "<b>This</b> is what <b>I</b> meant." |sed -e 's/<[^>]*>//g'
‘[^>]’ 指定“非 ‘>’”字符,其后的 ‘*’ 完成该表达式以表示“零或多个非 ‘>’ 字符”
eg2:
五楼[五楼(robot)]我要去五楼[五楼(robot)]
sed -e 's/\[[^]]*\]/ /g'
输出五楼 我要去五楼