首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在逗号分隔的括号数据中插入换行符?

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

Stack Overflow用户
提问于 2018-06-01 20:45:48
回答 2查看 52关注 0票数 0

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

代码语言:javascript
复制
(1,2,3),(A,B,C),(4,5,6)

我希望这些括号段在各自的行上,保留它们之间的逗号:

代码语言:javascript
复制
(1,2,3),
(A,B,C),
(4,5,6)

我尝试了sedtrawk的许多组合,但都没有产生预期的结果。它们将数据放在一行中,并添加一个r或n,或者将下一行的第一个左括号去掉,或者它们有其他的解析问题。

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

代码语言:javascript
复制
sed -r 's/\),\(+/\),\r\(/g' file > file

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

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-06-01 22:49:38

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

从标准输入

代码语言:javascript
复制
# echo '(1,2,3),(A,B,C),(4,5,6)' | sed -e 's/),/),\
/g'
(1,2,3),
(A,B,C),
(4,5,6)

从文件

代码语言:javascript
复制
# sed -e 's/),/),\
/g' infile

我用FreeBSD 11.2和Arch Linux对此进行了测试。

票数 1
EN

Stack Overflow用户

发布于 2018-06-03 05:59:54

试一下这个:

代码语言:javascript
复制
$ echo '(1,2,3),(A,B,C),(4,5,6)' | sed -e $'s/),/),\\\n/g'

注意$'',它将有助于用真正的换行符替换\n,通过执行以下操作进行测试:

代码语言:javascript
复制
$ echo $'s/),/),\\\n/g'
s/),/),\
/g

您将需要sh,如果您使用的是FreeBSD中的默认csh外壳,它将不起作用。

如果你不能改变外壳并且只有csh,这是可行的:

代码语言:javascript
复制
$ echo '(1,2,3),(A,B,C),(4,5,6)' | perl -pe 's/\),/\),\n/g'

这两个选项都将输出:

代码语言:javascript
复制
(1,2,3),
(A,B,C),
(4,5,6)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50643772

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档