如何在 sed 中使用反转匹配正则表达式?像 grep 一样

如何在 sed 中使用反转匹配正则表达式?像 grep 一样

如何使用反向匹配正则表达式(例如 grep -v)?

我想要 invernt

sed '/[Ss][0-9]*[Ee][0-9]*/d' ${Src}

喜欢

grep -ev '[Ss][0-9]*[Ee][0-9]*' ${Src}

答案1

我假设你的意思是grep -ve '[Ss][0-9]*[Ee][0-9]*'(因为grep -ev '[Ss][0-9]*[Ee][0-9]*'会尝试匹配v名为的文件中模式[Ss][0-9]*[Ee][0-9]*)。

如果是这样,那么请sed '/pattern/d'记住已经反向匹配 - 删除以下行匹配模式,它会打印那些匹配的不是匹配。如果你想反转(即相当于普通的grep -e 'pattern')那么你可以使用

sed '/[Ss][0-9]*[Ee][0-9]*/!d'

(删除以下行匹配[Ss][0-9]*[Ee][0-9]*即打印那些)或者更直接地禁用默认打印,然后仅打印匹配的行,即

sed -n '/[Ss][0-9]*[Ee][0-9]*/p'

相关内容