JSON 파일 업데이트

JSON 파일 업데이트

실제로 json 파일이 있습니다 file. 마지막 줄을 제외한 모든 줄 끝에 쉼표를 어떻게 추가하나요? 예를 들어:

{"a":1, "b":1, "c":2}
{"a":3, "b":3, "c":1}
{"a":1, "b":2, "c":3}

내가 원하는 것은:

{"a":1, "b":1, "c":2},
{"a":3, "b":3, "c":1},
{"a":1, "b":2, "c":3}

답변1

당신은 그것을 사용할 수 있습니다 awk:

awk 'NR > 1{print line","}{line=$0;}END{print $0}' jsonfile

답변2

당신은 그것을 사용할 수 있습니다 sed:

sed '$n;s/$/,/' file
  • 이는 $n;마지막 행인 경우 계속 진행함을 의미합니다.
  • 그렇지 않으면 ,줄 끝에 하나를 추가합니다.
  • POSIX가 아닌 플래그를 추가하면 -i파일이 그 자리에서 편집됩니다.

다음과 같은 경우 awk:

awk 'NR>1{print p} {p=$0","}END{print}' file1
  • 행의 내용을 변수에 저장합니다 p.
  • 이 변수는 마지막 줄을 제외하고 인쇄됩니다.
  • 입력이 끝나면 마지막 줄이 그대로 인쇄됩니다.

답변3

여기서 실제 목표는 JSON 엔터티 스트림에서 JSON 배열을 생성하는 것 같습니다. JSON과 관련된 훌륭한 도구는 다음과 같습니다.

https://stedolan.github.io/jq/

JSON 엔터티 파일(예: input.txt)을 JSON 배열로 변환하는 작업은 매우 간단합니다.

$ jq -s . input.txt

jq는 STDIN에서도 입력을 받을 수 있습니다.

답변4

원본 파일은 실제로줄 바꿈으로 구분된 JSON(NDJSON).

GNU 도구를 사용하는 것보다 설치하는 것이 좋습니다JSONNPM에서.

# say the file is test.log
$ json -f test.log -g
[
  {
    "a": 1,
    "b": 1,
    "c": 2
  },
  {
    "a": 3,
    "b": 3,
    "c": 1
  },
  {
    "a": 1,
    "b": 2,
    "c": 3
  }
]

관련 정보