Replace 如何在逗号分隔的括号数据中插入换行符?

Replace 如何在逗号分隔的括号数据中插入换行符?,replace,freebsd,Replace,Freebsd,我在文本文件中有一组数据,如下所示: (1,2,3),(A,B,C),(4,5,6) 我希望这些附加部分在各自的行上,保留它们之间的逗号: (1,2,3), (A,B,C), (4,5,6) (1,2,3), (A,B,C), (4,5,6) 我尝试了许多组合sed和tr和awk,但没有一个能产生预期的结果。它们在一行中添加了r或n,或者在下一行中使用了第一个开括号,或者存在其他解析问题 这最终在我的本地计算机(Linux)上起作用: 但是它在我需要它工作的远程服务器(FreeBSD)上失

我在文本文件中有一组数据,如下所示:

(1,2,3),(A,B,C),(4,5,6)
我希望这些附加部分在各自的行上,保留它们之间的逗号:

(1,2,3),
(A,B,C),
(4,5,6)
(1,2,3),
(A,B,C),
(4,5,6)
我尝试了许多组合
sed
tr
awk
,但没有一个能产生预期的结果。它们在一行中添加了r或n,或者在下一行中使用了第一个开括号,或者存在其他解析问题

这最终在我的本地计算机(Linux)上起作用:

但是它在我需要它工作的远程服务器(FreeBSD)上失败了。我还没有找到任何在FreeBSD中有效的东西

我已经做了好几个小时了。任何帮助都将不胜感激。谢谢大家!

虽然不能(轻松地)使用sed替换模式中的“\n”转义序列,但可以通过在行的末尾使用反斜杠来放置实际的换行符

来自stdin 从文件 我用FreeBSD 11.2和Arch Linux对此进行了测试。

虽然不能(轻松地)使用sed替换模式中的“\n”转义序列,但可以在换行符的末尾使用反斜杠来放置实际的换行符

来自stdin 从文件 我用FreeBSD 11.2和Arch Linux对此进行了测试。

尝试一下:

$ echo '(1,2,3),(A,B,C),(4,5,6)' | sed -e $'s/),/),\\\n/g'
请注意
$'
,它将有助于用真正的换行符替换
\n
,通过执行以下操作进行测试:

$ echo $'s/),/),\\\n/g'
s/),/),\
/g
您将需要
sh
,如果您在FreeBSD中使用默认的
csh
shell,则将无法工作

如果您无法更改shell,并且只有
csh
,则此操作有效:

$ echo '(1,2,3),(A,B,C),(4,5,6)' | perl -pe 's/\),/\),\n/g'
两个选项都将输出:

试一试:

$ echo '(1,2,3),(A,B,C),(4,5,6)' | sed -e $'s/),/),\\\n/g'
请注意
$'
,它将有助于用真正的换行符替换
\n
,通过执行以下操作进行测试:

$ echo $'s/),/),\\\n/g'
s/),/),\
/g
您将需要
sh
,如果您在FreeBSD中使用默认的
csh
shell,则将无法工作

如果您无法更改shell,并且只有
csh
,则此操作有效:

$ echo '(1,2,3),(A,B,C),(4,5,6)' | perl -pe 's/\),/\),\n/g'
两个选项都将输出: