타임스탬프가 포함된 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를 사용합니다.