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

时间:2019-05-28 09:46:40

标签: sed newline

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

return

myfile是这样的:

sed -i 's/),(/),\n(/g' myfile

预期结果是:

(237),(238)

实际结果是:

(237),
(238)

我尝试了许多写新行的方法,但是都失败了。有可能获得预期的结果吗?

我发现(237),n(238) 有效,而GNU sed无效。

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

这可能对您有用:

sed -e 'G' -e 's/,\(.*\)\(.\)/,\2\1/' file

G命令会将保留空间添加到模式空间,实际上,由于保留空间为空,因此将添加换行符。模式匹配可以将其重新排列为所需的结果。