특정 문자 뒤에 쉼표를 삽입하고 마지막 레코드에는 삽입하지 않으려면 어떻게 해야 합니까?
데이터가 있습니다
[
{"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
또는 tr
와sed
tr "\n" "|" < file | sed "s/}|{/},|{/g" | tr "|" "\n" file
심지어
tr "\n" "|" < file | sed "s/}|{/},\n{/g; s/|/\n/g"
사용하지 않으면 줄 길이가 제한될 수 있습니다.암소 비슷한 일종의 영양sed