![ZSH 기록을 JSON으로 내보내는 방법은 무엇입니까?](https://linux55.com/image/165243/ZSH%20%EA%B8%B0%EB%A1%9D%EC%9D%84%20JSON%EC%9C%BC%EB%A1%9C%20%EB%82%B4%EB%B3%B4%EB%82%B4%EB%8A%94%20%EB%B0%A9%EB%B2%95%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
타임스탬프가 포함된 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를 사용합니다.