Ну, хотя я полностью согласен с @gronostaj по поводу НЕ использовать awk
или sed
как инструмент для анализа JSON, я знаю, что иногда могут быть случаи, когда вы не можете использовать что-то еще, кроме того, что поставляется с ОС.
Если вы абсолютно уверены, что JSON, который вы разместили, всегда будет в том же формате, что и вы, то решение приведено ниже:
#!/bin/sh data=' { "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 } ] } ' ########################################################### echo "$" | awk -F: 'BEGIN{ printf ("%s\t\t%s\t%s\n","Date", "User", "Size") } /lastUpdateTime/ /date/ { gsub(/\"|,|\s/,""); gsub(/T.+$/,""); printf ("%s\t", $2) } /user/ { gsub(/\"|,|\s/,""); printf ("%s\t", $2) } /size/ { gsub(/\"|,|\s/,""); printf ("%s\n", $2) } '