如何在某个字符后插入逗号?

如何在某个字符后插入逗号?

如何在某个字符后插入逗号,但不为最后一条记录插入逗号。

我有数据

[
{"ID": 12345}
{"ID": 67891}
{"ID": 14785}
]

所以我试图在}除最后一个之外的每个后面插入一个逗号。

所以更新应该是这样的:

[
{"ID": 12345},
{"ID": 67891},
{"ID": 14785}
]

有人可以帮我解决这个问题吗?

答案1

$ awk '/^{/ { if (lastline ~ "}$") lastline=lastline ","; print lastline; }; '\
'! /^{/ && NR>1 { print lastline; }; { lastline=$0; }; '\
'END { print lastline; }' inputfile
[
{"ID": 12345},
{"ID": 67891},
{"ID": 14785}
]
[
{"ID": 12345},
{"ID": 67891},
{"ID": 14785}
]

答案2

Perl 一行:

$ perl -a -F"\n" -ne 'BEGIN{$/="]";} print $F[0]."\n" if $. == 1; map { ($F[$_] =~ /[\[\]]/)  || ($_ == @F-2) ? print $F[$_]."\n" : print $F[$_].",\n"; } (1 .. @F-1)  ' file
[
{"ID": 12345},
{"ID": 67891},
{"ID": 14785}
]
[
{"ID": 12345},
{"ID": 67891},
{"ID": 67891},
{"ID": 14785}
]

输入文件:

$ cat file
[
{"ID": 12345}
{"ID": 67891}
{"ID": 14785}
]
[
{"ID": 12345}
{"ID": 67891}
{"ID": 67891}
{"ID": 14785}
]

答案3

或者与trsed

tr "\n" "|" < file | sed  "s/}|{/},|{/g" | tr "|" "\n" file

甚至

tr "\n" "|" < file | sed  "s/}|{/},\n{/g; s/|/\n/g"

如果您不使用,线路长度可能会受到限制GNUsed

相关内容