Nun, obwohl ich mit @gronostaj völlig einverstanden bin, was NICHT verwendet wird awk
oder sed
als Parsing-Tool für JSON, weiß ich manchmal, dass es Fälle gibt, in denen Sie nichts anderes verwenden können, außer was mit dem Betriebssystem mitgeliefert wird.
Wenn Sie absolut sicher sind, dass das von Ihnen gepostete JSON immer dasselbe Format hat wie Sie, ist die Lösung unten:
#!/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) } '