다음 데이터가 포함된 로그 파일이 있는데 user.txt
이를 json 형식으로 변환하고 싶습니다.
{"user":"Demo Admin","user_id":"57c4718434243dc47d8b456c","org_id":"57c4718434243dc47d8b456b","superuser_id":null,"superuser_name":null,"application":"Trackier Webapp","method":"GET","ip":"43.249.54.66","domain":"demo.trackier.com","url":"https:\/\/demo.trackier.com\/admin.html","created":"2022-09-08 06:19:18","@timestamp":"2022-09-08T06:19:18Z"}
{"user":"Demo Admin","user_id":"57c4718434243dc47d8b456c","org_id":"57c4718434243dc47d8b456b","superuser_id":null,"superuser_name":null,"application":"Trackier Webapp","method":"GET","ip":"43.249.54.66","domain":"demo.trackier.com","url":"https:\/\/demo.trackier.com\/admin.html","created":"2022-09-08 06:19:35","@timestamp":"2022-09-08T06:19:35Z"}
답변1
한 줄에 하나의 json이 있는 파일을 json 배열로 변환한다고 가정하면 다음과 같이 할 수 있습니다.
sed '1s/^/[/;$s/$/]/;$!s/$/,/' < file.multijson > file.json
[
첫 번째 줄의 시작 부분, ]
마지막 줄의 끝 부분, ,
마지막 줄을 제외한 모든 부분의 끝 부분에 삽입 됩니다 .
이 있는 경우 jq
다음을 수행할 수도 있습니다.
jq -s < file.multijson > file.json
(간소한 형식을 위해 추가됨 -c
) 그러나 숫자(예: 1e1 또는 10.0000000000000001을 10으로 변경) 또는 문자열(예: "\u00e9"
로 변경 "é"
)의 형식을 다시 지정할 수 있습니다.