如何将 ZSH 历史记录导出为 JSON?

如何将 ZSH 历史记录导出为 JSON?

我想将带有时间戳的 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

相关内容