特定の文字の後にカンマを挿入するには?

特定の文字の後にカンマを挿入するには?

特定の文字の後にカンマを挿入し、最後のレコードに挿入しないようにするにはどうすればよいですか?

データがあります

[
{"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

パール1行:

$ 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"

使用しないと、行の長さが制限される可能性があります。牛に似た一種の栄養sed

関連情報