我在RegExr.com中测试了这个特殊的正则表达式:
/(\*)*((\s)?(\w)*)/g
匹配以下内容:
* Global Links contained...etc
* Change User, contact list...etc
(从...开始的所有内容只是句子中的额外单词,而不是文字......等等)
我尝试在sed命令中使用这个正则表达式作为bash脚本的一部分,如下所示:
sed "/(\*)*((\s)?(\w)*)/d" test.txt > stripped.txt
但是这两行仍然保留在stripped.txt中。有没有我在正则表达式或文件中没有考虑的东西?在这两行之前是块注释(/ **)的开始,而块注释结束在它们之后(* /),这两行都在新行上。我错过了一些新线条或者sed命令/正则表达式错误吗?
答案 0 :(得分:3)
默认情况下,您没有考虑sed使用的正则表达方言。这不是有效的BRE(基本正则表达式)。
你需要告诉sed使用ERE(扩展的正则表达式)。
对于GNU sed是-r
标志,对于BSD sed是-E
标志(尽管-r
通常可用作compat标志)。
sed -r "/(\*)*((\s)?(\w)*)/d" test.txt > stripped.txt