Bash:sed 正则表达式模式与字符串不匹配



我已经在Regexr.com中测试了此特定的正则条件:

/(*)*((s)?(w)*)/g

匹配以下内容:

* Global Links contained...etc
* Change User, contact list...etc

(... on的所有内容只是句子中的额外单词,而不是字面的……等)

我试图在sed命令中使用此正则命令作为bash脚本的一部分:

sed "/(*)*((s)?(w)*)/d" test.txt > stripped.txt

,但这两条线仍然保持在剥离中。我在正则或文件中没有考虑什么?在这两行是块注释(/**)的开始之前,块注释结束在它们之后(*/),这两者都在新行上。我是否错过了新线条晦涩难懂的东西,还是sed命令/正则是错误的?

您默认情况下,您没有考虑到SED使用的Regex的方言。那不是有效的BRE(基本正则表达式)。

您需要告诉SED使用ERE(扩展正则表达式)。

对于-r标志的GNU SED,对于-E标志的BSD SED(尽管-r通常可作为Compat Flag使用)。

sed -r "/(*)*((s)?(w)*)/d" test.txt > stripped.txt

相关内容

  • 没有找到相关文章

最新更新