jq를 사용하여 정수 목록이 포함 된 JSON 파일 처리

Ailurus

저는 현재 jq아래 예와 같이 정수 목록이 포함 된 JSON 파일을 처리 하는 사용 하는 방법을 찾고 있습니다.

[
  {
    "box_id": 1,
    "number_items": [
      4,
      6,
      7,
      5
    ]
  },
  {
    "box_id": 3,
    "number_items": [
      15,
      null,
      15,
      9
    ]
  },
  {
    "box_id": 6,
    "number_items": [
      2,
      4,
      0,
      1
    ]
  }
]

첫째, 나는 각각의 최대 값을 얻으려고 노력하고 box_id있습니다. 최대 값을 얻는 것은 예를 들어 상대적으로 간단 jq '.[].number_items | max합니다.

7
15
4

그러나 저는 이것을 새로운 JSON 파일에 저장하고 싶습니다.

[
  {
    "box_id": 1,
    "max_items": 7
  },
  {
    "box_id": 3,
    "max_items": 15
  },
  {
    "box_id": 6,
    "max_items": 4
  }
]

다른 부분은 좀 더 복잡합니다. 각 목록에서 연속 된 항목의 절대 차이의 합을 찾는 방법은 box_id무엇입니까? 예를 들어, [4,6,7,5]차이 [6-4=2, 7-6=1, 5-7=-2]=에 해당하는을 고려하십시오 [2,1,-2]. 그 절대 값의 합은 2+1+2= 5입니다. 목록에는 null이 포함될 수 있습니다 . 이러한 항목은 제거해야합니다. 그래야 차이 와 절대 합계에 해당하는 [15,null,15,9]것을 얻을 수 있습니다.[15,15,9][0,-6]6

피크

jq에 약간 익숙해지면 첫 번째 문제는 사소하므로 해결책을 제시하는 것 이상을 말하지 않겠습니다.

map( {box_id, max_items: (.number_items | max) } )

두 번째 문제에 대한 요구 사항은 약간 불분명하지만 필요에 맞게 다음을 쉽게 조정할 수 있습니다. 첫째, 도우미 함수 differences:

# Input: an array
# Output: a non-empty stream of non-negative integers
def differences:
  def abs: if . < 0 then - . else . end;
  map( select(. != null) )
  | if length == 0 then 0
    elif length == 1 then (.[0]|abs)
    else range(1;length) as $i | ( .[$i] - .[$i - 1] ) | abs end;  

그런 다음 다음과 같이 사용할 수 있습니다.

map( {box_id, sumAD: ( [.number_items | differences] | add) } )

그러나 (메모리 사용 관점에서) differences스트림 방출 한다는 사실을 활용하는 것이 더 좋습니다 .

def sigma(s): reduce s as $x (0; . + $x);
map( {box_id, sumAD: ( sigma(.number_items | differences) ) } )

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

RabbitMQ가 포함 된 MassTransit 3.0.1 (프리 릴리즈)이 2.9.9와 동일한 구성 / 설정을 사용하여 메시지를 처리하지 못함

분류에서Dev

jq를 사용하여 bash에서 JSON 파일 처리

분류에서Dev

bash에서 jq를 사용하여 JSON 파일 처리

분류에서Dev

Python Pandas를 사용하여 중첩 된 JSON을 포함하는 열 처리

분류에서Dev

bash를 사용하여 파일 이름이 포함 된 파일을 사용하여 여러 파일 만들기

분류에서Dev

Spring을 사용하여 파일 이름에 "#"이 포함 된 경우 파일 리소스를 찾을 수 없습니다.

분류에서Dev

개정 사이에 변경된 파일을 포함하는 디렉토리 목록 생성

분류에서Dev

c # 파일 이름에 특수 문자가 포함 된 WebClient를 사용하여 파일 다운로드 시도

분류에서Dev

jq를 사용하여 중첩 된 JSON 파일을 고유 키가있는 플랫 목록으로 분해

분류에서Dev

PHP를 사용하여 문자열 내에 포함 된 변수 처리

분류에서Dev

목록에 이름이 지정된 쉘 변수를 포함하는 JSON 맵 생성

분류에서Dev

bash에서 jq를 사용하여 변수에 포함 된 json에서 값을 추출하는 방법

분류에서Dev

튜플을 사용하여 파이썬 목록 이해 필터링 (정수를 문자열로 포함)

분류에서Dev

파일 이름이 컬렉션을 사용하여 타임 스탬프를 포함 할 파일의 목록을 정렬 할 수 없습니다 (자바)

분류에서Dev

특정 확장자를 사용하여 이름에 관계없이 두 개의 파일이 포함 된 디렉토리 검색

분류에서Dev

특정 함수 호출에 특정한 파일 처리를 사용하여 C ++에서 다중 파일 생성

분류에서Dev

JQ를 사용하여 파일 목록에서 JSON 파일 만들기

분류에서Dev

URL이 포함 된 CSV 파일을 처리하여 잘못된 "기본"포트를 명시 적으로 명시된 포트로 바꿉니다.

분류에서Dev

파이썬에서 paho mqtt를 사용하여 수신 된 메시지 처리

분류에서Dev

Ansible에서 json_query를 사용하여 사전 목록에 포함 된 사전 목록을 쿼리합니다.

분류에서Dev

생성 된 파일 이름 목록을 인수 목록으로 사용-공백 포함

분류에서Dev

생성 된 파일 이름 목록을 인수 목록으로 사용-공백 포함

분류에서Dev

파이썬은 쉼표 (,)를 포함하여 사전 json 파일 목록에서 값을 제거합니다.

분류에서Dev

파이썬 zip 함수를 사용하여 두 목록을 함께 정렬

분류에서Dev

동일한 목록을 사용하고 수정하는 두 함수를 다중 처리

분류에서Dev

파이썬 목록 이해. 미리 정의 된 값을 반환 할 때까지 함수를 반복적으로 호출하여 목록 생성

분류에서Dev

Lodash를 사용하여 JSON 데이터를 중첩 된 목록으로 포맷

분류에서Dev

PHP를 사용하여 JSON이 포함 된 CSV 구문 분석

분류에서Dev

정규식을 사용하여 목록 파이썬의 각 단어에 대한 단어를 포함하는 집합을 캡처

Related 관련 기사

  1. 1

    RabbitMQ가 포함 된 MassTransit 3.0.1 (프리 릴리즈)이 2.9.9와 동일한 구성 / 설정을 사용하여 메시지를 처리하지 못함

  2. 2

    jq를 사용하여 bash에서 JSON 파일 처리

  3. 3

    bash에서 jq를 사용하여 JSON 파일 처리

  4. 4

    Python Pandas를 사용하여 중첩 된 JSON을 포함하는 열 처리

  5. 5

    bash를 사용하여 파일 이름이 포함 된 파일을 사용하여 여러 파일 만들기

  6. 6

    Spring을 사용하여 파일 이름에 "#"이 포함 된 경우 파일 리소스를 찾을 수 없습니다.

  7. 7

    개정 사이에 변경된 파일을 포함하는 디렉토리 목록 생성

  8. 8

    c # 파일 이름에 특수 문자가 포함 된 WebClient를 사용하여 파일 다운로드 시도

  9. 9

    jq를 사용하여 중첩 된 JSON 파일을 고유 키가있는 플랫 목록으로 분해

  10. 10

    PHP를 사용하여 문자열 내에 포함 된 변수 처리

  11. 11

    목록에 이름이 지정된 쉘 변수를 포함하는 JSON 맵 생성

  12. 12

    bash에서 jq를 사용하여 변수에 포함 된 json에서 값을 추출하는 방법

  13. 13

    튜플을 사용하여 파이썬 목록 이해 필터링 (정수를 문자열로 포함)

  14. 14

    파일 이름이 컬렉션을 사용하여 타임 스탬프를 포함 할 파일의 목록을 정렬 할 수 없습니다 (자바)

  15. 15

    특정 확장자를 사용하여 이름에 관계없이 두 개의 파일이 포함 된 디렉토리 검색

  16. 16

    특정 함수 호출에 특정한 파일 처리를 사용하여 C ++에서 다중 파일 생성

  17. 17

    JQ를 사용하여 파일 목록에서 JSON 파일 만들기

  18. 18

    URL이 포함 된 CSV 파일을 처리하여 잘못된 "기본"포트를 명시 적으로 명시된 포트로 바꿉니다.

  19. 19

    파이썬에서 paho mqtt를 사용하여 수신 된 메시지 처리

  20. 20

    Ansible에서 json_query를 사용하여 사전 목록에 포함 된 사전 목록을 쿼리합니다.

  21. 21

    생성 된 파일 이름 목록을 인수 목록으로 사용-공백 포함

  22. 22

    생성 된 파일 이름 목록을 인수 목록으로 사용-공백 포함

  23. 23

    파이썬은 쉼표 (,)를 포함하여 사전 json 파일 목록에서 값을 제거합니다.

  24. 24

    파이썬 zip 함수를 사용하여 두 목록을 함께 정렬

  25. 25

    동일한 목록을 사용하고 수정하는 두 함수를 다중 처리

  26. 26

    파이썬 목록 이해. 미리 정의 된 값을 반환 할 때까지 함수를 반복적으로 호출하여 목록 생성

  27. 27

    Lodash를 사용하여 JSON 데이터를 중첩 된 목록으로 포맷

  28. 28

    PHP를 사용하여 JSON이 포함 된 CSV 구문 분석

  29. 29

    정규식을 사용하여 목록 파이썬의 각 단어에 대한 단어를 포함하는 집합을 캡처

뜨겁다태그

보관