如何使用新行进行BSD sed替换

如何使用新行进行BSD sed替换,sed,newline,Sed,Newline,我有一个sed命令,如下所示: sed -i 's/),(/),\n(/g' myfile myfile是这样的: (237),(238) 预期结果是: (237), (238) (237),n(238) 实际结果是: (237), (238) (237),n(238) 我尝试了很多写新行的方法,但都失败了。有可能得到预期的结果吗 我发现GNU-sed有效,但BSD-sed无效。对于BSD-sed,我们可以将新行写为$'\n',因此命令应该是: /usr/bin/sed 's/),(

我有一个sed命令,如下所示:

sed -i 's/),(/),\n(/g' myfile
myfile是这样的:

(237),(238)
预期结果是:

(237),
(238)
(237),n(238)
实际结果是:

(237),
(238)
(237),n(238)
我尝试了很多写新行的方法,但都失败了。有可能得到预期的结果吗


我发现
GNU-sed
有效,但
BSD-sed
无效。

对于
BSD-sed
,我们可以将新行写为
$'\n'
,因此命令应该是:

/usr/bin/sed 's/),(/),\'$'\n''(/g' myfile

这可能适合您:

sed -e 'G' -e 's/,\(.*\)\(.\)/,\2\1/' file
G
命令将保留空间附加到模式空间,实际上,当保留空间为空时,将附加一个换行符。模式匹配可以将其重新安排到所需的结果