unix - jq教程 - 如何在shell脚本中pretty-print JSON?

jq命令行 / json / command-line / format / pretty-print

是否有一个(Unix)shell脚本可以将JSON格式化为人类可读的形式?

基本上,我想让它转换以下内容。

{ "foo": "lorem", "bar": "ipsum" }

...变成这样的东西:

{
    "foo": "lorem",
    "bar": "ipsum"
}

16 revs, 12 users 29%AnC



Answer #1
#/bin/bash

grep -Eo '"[^"]*" *(: *([0-9]*|"[^"]*")[^{}\["]*|,)?|[^"\]\[\}\{]*|\{|\},?|\[|\],?|[0-9 ]*,?' | awk '{if ($0 ~ /^[}\]]/ ) offset-=4; printf "%*c%s\n", offset, " ", $0; if ($0 ~ /^[{\[]/) offset+=4}'
cat file.json | json_pretty.sh