특정 문자 뒤에 쉼표를 삽입하는 방법은 무엇입니까?

특정 문자 뒤에 쉼표를 삽입하는 방법은 무엇입니까?

특정 문자 뒤에 쉼표를 삽입하고 마지막 레코드에는 삽입하지 않으려면 어떻게 해야 합니까?

데이터가 있습니다

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

관련 정보