jq 필터 @tsv 내부에서 탭 제거 또는 교체

jq 필터 @tsv 내부에서 탭 제거 또는 교체

JSON을 입력하세요:

[
  {
    "id": "1e9b2215-9efd-67cc-9113-2b21c74f09d3",
    "login": "u0154",
    "name": "Roman ABC",
    "role": "User",
    "groups": [
      {
        "id": "1e99833f-9876-65d0-9d24-237228b9d9e0",
        "name": "AGE"
      }
    ],
    "disabled": false,
    "lLoginTime": 1567158950468,
    "lLoginFrom": "192.168.100.11"
  },
  {
    "id": "1e9b2215-9c2b-64f4-a0f1-47abdab7ae5f",
    "login": "u0155",
    "name": "Tomas CDE",
    "role": "User",
    "groups": [
      {
        "id": "1e8dc82a-596f-623c-8bc5-100000000000",
        "name": "ZZZ"
      },
      {
        "id": "1e99234f-9876-65d0-9d24-534528b9d9e0",
        "name": "NTE"
      }
    ],
    "disabled": false,
    "lLoginTime": 1566302653093,
    "lLoginFrom": "192.168.100.16"
  }
]

탭으로 구분된 .id, .login 및 (파이프 막대) 또는 쉼표로 구분된 모든 사용자 그룹을 인쇄해야 합니다.

내가 지금 가지고 있는 것:

$ jq -r '.[]|[.id, .login, ([.groups[].name]|@tsv)]|@tsv' test.json
1e9b2215-9efd-67cc-9113-2b21c74f09d3    u0154   AGE
1e9b2215-9c2b-64f4-a0f1-47abdab7ae5f    u0155   ZZZ\tNTE

|마지막 열의 그룹이 공백으로 구분되거나 현재 그룹 대신에 구분되도록 필터를 수정해야 합니다.\t

답변1

join()대신 사용하십시오 @tsv:

$ jq -r '.[]|[.id, .login, ([.groups[].name]|join("|"))]|@tsv' test.json
1e9b2215-9efd-67cc-9113-2b21c74f09d3    u0154   AGE
1e9b2215-9c2b-64f4-a0f1-47abdab7ae5f    u0155   ZZZ|NTE

관련 정보