sed 正则表达式全局查找和删除字符串

sed regex find and delete string globally

我有以下(有效的)正则表达式:

UNUSED([^,}]+)\}|,\s?UNUSED([^{]+)|UNUSED([^{]+),\s?|UNUSED([^{]+)

我运行命令

sed 's/UNUSED([^,}]+)\}|,\s?UNUSED([^{]+)|UNUSED([^{]+),\s?|UNUSED([^{]+)//g' < index.css > newfile

但是新文件仍然包含所有应该删除的模式。我做错了什么?

index.css 包括。正则表达式:

http://regexr.com/3agmm

您正在使用扩展的 POSIX 正则表达式。您需要将 -r 传递给 sed 以告诉它使用扩展的 POSIX 正则表达式。

另请注意,您正在使用的捕获组可以省略:

s/UNUSED[^,}]+}|,\s?UNUSED[^{]+|UNUSED[^{]+,\s?|UNUSED[^{]+//g

当然你也可以使用基本的 POSIX 正则表达式,然后不使用 -n 选项:

s/UNUSED[^,}]\+}\|,\s?UNUSED[^{]\+\|UNUSED[^{]\+,\s?\|UNUSED[^{]\+//g