我想将带有时间戳的 ZSH 历史记录导出为 JSON 输出。我怎样才能实现这个目标?
我是否需要手动解析类似的输出history -E
?
答案1
在 shell 中运行它(因为它history
是 shell 内置的):
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