txt -> json으로 변환하는 방법은 무엇입니까?

txt -> json으로 변환하는 방법은 무엇입니까?
C-11^Mark^Docking AWS
C-12^Mark^Docking AWS
C-13^Lay^Ploting
C-14^Lay^Ploting
C-15^Lay^Ploting
C-16^Vincent^GPU Calc
C-17^Vincent^GPU Calc
C-18^Vincent^GPU Calc
C-19^Vincent^GPU Calc

나는 다음 명령을 사용합니다.

jq -Rn '
    [inputs | select(. != "") / "^"]
    | reduce .[] as [$container, $user, $job] ({};
      .[$job] += [{$user, $container}]
    )
    'test.csv > test.json

이 형식의 데이터를 원합니다

{
  "job": "Docking AWS",
  "user": "Mark",
  "container": [
    "C-11",
    "C-12"
 ]
}

. . .

이 목표를 어떻게 달성할 수 있나요?

답변1

이 질문은 원래 조정을 위한 것이었습니다.또 다른 문제, 내가 제공한답변. 나는 또한 거기에서 조정된 문제를 해결했습니다.

제가 생각해낸 쉘 코드는 다음과 같습니다.

jq -Rn '
    reduce ( inputs / "^" ) as [$container,$user,$job] ({}; 
        .[$job] |= ( .job       |=   $job  |
                     .user      |=   $user |
                     .container += [ $container ] )
    ) | [ .[] ]' file

reduce이는 최상위 개체 내의 하위 개체로 개체를 만드는 데 사용되며 , 각 개체는 작업 문자열로 입력됩니다. 모든 데이터가 이런 방식으로 처리되면 하위 개체가 최상위 배열로 확장됩니다.

질문의 데이터가 주어지면 다음 JSON 문서가 생성됩니다.

[
  {
    "job": "Docking AWS",
    "user": "Mark",
    "container": [
      "C-11",
      "C-12"
    ]
  },
  {
    "job": "Ploting",
    "user": "Lay",
    "container": [
      "C-13",
      "C-14",
      "C-15"
    ]
  },
  {
    "job": "GPU Calc",
    "user": "Vincent",
    "container": [
      "C-16",
      "C-17",
      "C-18",
      "C-19"
    ]
  }
]

관련 정보