Как экспортировать историю ZSH в JSON?

Попробуйте режим абзаца awk:

$ awk -v RS= -v ORS='\n\n' '{gsub(/<[^>]+>?\n?/, "")}1' ip.txt 
This is the first
block of text.

This is the second block.


do not delete this>
Third block here.
  • -v RS=это приведет к использованию одной или нескольких последовательных пустых строк в качестве разделителя входных записей
  • -v ORS='\n\n'установить разделитель выходных записей в виде двух символов новой строки
  • gsub(/<[^>]+>?\n?/, "")удалить <, за которыми следуют не >символы, за которыми следуют необязательные >и символы новой строки
  • 1идиоматический способ распечатать содержимое входной записи


То же самое сperl

perl -00 -lpe 'BEGIN{$\="\n\n"} s/<[^>]+>?\n?//g' ip.txt
0
08.12.2019, 16:20
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

0
28.01.2020, 03:02

Теги

Похожие вопросы