Macos 用“替换文件中包含特定字符的字符串”;sed";在mac OS中

Macos 用“替换文件中包含特定字符的字符串”;sed";在mac OS中,macos,sed,Macos,Sed,我试图将包含(0)的任何字符串替换为文件中的其他。例如,如果文件包含以下行: apple(0) apple(20) orange(70) banana(0) 在Linux中,我可以通过sed的/\s*\((0)\)\s*/other/g文件来完成。然后,该文件将被修改为以下内容: other apple(20) orange(70) other 我也想在MacOSX上做同样的事情,但它不起作用。这种情况在mac OS中的变体是什么?谢谢。正则表达式\S是一个GNU扩展,可以用[^[:blan

我试图将包含
(0)
的任何字符串替换为文件中的
其他
。例如,如果文件包含以下行:

apple(0)
apple(20)
orange(70)
banana(0)
在Linux中,我可以通过sed
的/\s*\((0)\)\s*/other/g文件
来完成。然后,该文件将被修改为以下内容:

other
apple(20)
orange(70)
other

我也想在MacOSX上做同样的事情,但它不起作用。这种情况在mac OS中的变体是什么?谢谢。

正则表达式
\S
是一个GNU扩展,可以用
[^[:blank:]替换

以符合posix的方式

请你试试:

sed 's/[^[:blank:]]*(0)[^[:blank:]]*/other/g' file
(请注意,用于生成捕获组的外部参数没有意义(无害)并且已删除。)

文件的内容

apple(0)
apple(20)
orange(70)
banana(0)
ABC apple(0)
上述
sed
命令的输出:

other
apple(20)
orange(70)
other
ABC other
我已经用
--posix
开关验证了
sed
命令。

希望这有帮助。

是的。刚刚选中,
[^[:blank:][/code>是
posix
的正确选项。谢谢。谢谢你的快速回复。顺便说一句,在这种情况下,最外层的paren似乎是不必要的,因为在替换中不使用back引用。我简化了答案,更新了答案。