ZSH 기록을 JSON으로 내보내는 방법은 무엇입니까?

ZSH 기록을 JSON으로 내보내는 방법은 무엇입니까?

타임스탬프가 포함된 ZSH 기록을 JSON 출력으로 내보내고 싶습니다. 이 목표를 어떻게 달성할 수 있나요?

유사한 출력을 수동으로 구문 분석해야 합니까 history -E?

답변1

셸에서 실행합니다( history셸에 내장되어 있으므로).

history -E 0 > history_log.txt

그런 다음 다음 스크립트를 실행합니다.

cat history_log.txt | awk '{$1=$2=$3=""}1' | cut -c 4- | jq --raw-input --slurp 'split("\n")' > a_temp.json
cat history_log.txt |awk '{$1=""; print $2, $3}'  | jq --raw-input --slurp 'split("\n")' > b_temp.json

jq 'map( { "command": . } )' a_temp.json > a.json
jq 'map( { "datetime": . } )' b_temp.json > b.json

jq -s 'transpose|map(add)' a.json b.json > output.json

위의 답변은 awk와 jq를 사용합니다.

관련 정보