如何使用 awk/sed 提取 json 文件?

1 awk sed shell-script

输入数据.json

{
  "lastUpdateTime" : "2018-07-20T10:56:26.000Z",
  "items" : [ {
    "date" : "2018-07-19T21:09:27.000Z",
    "user" : "dddd",
    "size" : 5219402,
    "rawSize" : 15658206,
    "numFiles" : 119
  }, {
    "date" : "2018-07-19T21:09:27.000Z",
    "user" : "aaaa",
    "size" : 20524410845,
    "rawSize" : 61573215663,
    "numFiles" : 7540
  }, {
    "date" : "2018-07-19T21:09:27.000Z",
    "user" : "wwww",
    "size" : 0,
    "rawSize" : 0,
    "numFiles" : 2
  }, {
    "date" : "2018-07-19T21:09:27.000Z",
    "user" : "qqqq",
    "size" : 201084,
    "rawSize" : 603252,
    "numFiles" : 25
  }, {
    "date" : "2018-07-19T21:09:27.000Z",
    "user" : "ttttt",
    "size" : 280395332,
    "rawSize" : 288900666,
    "numFiles" : 199
  } ]
}
Run Code Online (Sandbox Code Playgroud)

预期产出

User Size
aaa   121
bbb   123
Run Code Online (Sandbox Code Playgroud)

如何将 JSON 转换为上表?请帮我。

gro*_*taj 5

唯一诚实正确的答案是:

不。

awk并且sed不是适合这项工作的工具。您将无法正确处理 JSON 转义和编码。您可以尝试涵盖一些基本情况,但您也可以使用适当的工具:jq

jq解决方案

jq '.items[] | "\(.user) \(.size)"' -r /path/to/file
Run Code Online (Sandbox Code Playgroud)

(或者,您可以将 JSON 通过管道传输到命令中,而不是从文件中读取)

对齐列:

jq '.items[] | "\(.user) \(.size)"' -r /path/to/file | column -t
Run Code Online (Sandbox Code Playgroud)