
타임스탬프가 포함된 json 파일을 생성하는 쉘 스크립팅 및 jq 도구에 관한 질문이 있습니다.
echo "{\"vtg\":[$value]}" | jq -a '. + {date: now|strflocaltime("%r")}' > sample.json
이 명령을 사용하면 json 파일 아래에 표시됩니다.
{
"vtg": [
11.769,
11.769,
11.339,
11.788,
11.867,
11.886,
11.808,
11.339,
11.554,
11.182
],
"date": "03:31:52 PM"
}
하지만 나는 다음과 같은 타임 스탬프를 원합니다.
"date": [
15,
31,
52
]
언제
strptime("%H:%M:%SZ")
내가 원하는 형식으로 해당 타임스탬프를 가져와야 합니다. 하지만 오류가 발생합니다.
jq: error (at <stdin>:10): strptime/1 requires string inputs and arguments
누군가 JSON 파일에서 해당 타임스탬프를 얻는 방법을 도와줄 수 있나요?
답변1
이 strptime()
기능은 다음과 같은 용도로 사용됩니다.분석하다형식화된 시간(시간의 반대 strftime()
) 당신은 원한다 strftime()
.
사용 jq
:
jq -n 'now as $t | { date: [ ($t|strftime("%H")), ($t|strftime("%M")), ($t|strftime("%S")) ] }'
이는 함수 strftime()
에서 제공하는 시간의 형식을 지정하는 데 사용됩니다 now
. strflocaltime()
시간을 현지 시간으로 변환하는 데 사용됩니다 .
너무 장황하거나 비효율적이라면(실제로 배열 strftime()
의 각 요소에 대해 한 번씩 호출합니다 date
!) HH:MM:SS
타임스탬프 생성을 고려해보세요.끈, 콜론으로 나누기:
jq -n '{ date: (now | strftime("%H:%M:%S") | split(":")) }'
위의 명령 중 하나는 다음을 생성할 수 있습니다.
{
"date": [
"07",
"01",
"23"
]
}
전체 스크립트( 이름이 지정된 배열의 값에서 jo
초기 배열을 안전하게 생성하는 데 사용 ):vtg
bash
#!/bin/bash
value=(11.769 11.769 11.339 11.788 11.867 11.886 11.808 11.339 11.554 11.182)
jo vtg="$( jo -a "${value[@]}" )" |
jq '. += now as $t | { date: [ ($t|strftime("%H")), ($t|strftime("%M")), ($t|strftime("%S")) ] }'
# or...
jo vtg="$( jo -a "${value[@]}" )" |
jq '. += { date: (now | strftime("%H:%M:%S") | split(":")) }'
jo
다음 명령을 읽어 즉시 데이터의 날짜 섹션을 생성할 수도 있습니다 date
.
jo vtg="$( jo -a "${value[@]}" )" \
date="$( jo -a $( date +'%H %M %S' ) )"
date
이는 형식 문자열의 공백 에서 출력을 분할하는 쉘에 의존합니다 . 위에서 현지 시간을 알 수 있습니다.
이 jo
도구는 다음에서 사용할 수 있습니다.https://jpmens.net/2016/03/05/a-shell-command-to-create-json-jo/