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引用。我简化了答案,更新了答案。