Bem, apesar de eu concordar completamente com @gronostaj sobre NÃO usar awk
ou sed
como ferramenta de análise para JSON, eu sei que às vezes pode haver casos em que você não pode usar nada além do que vem com o sistema operacional .
Se você tem certeza absoluta de que o JSON que você postou estará sempre no mesmo formato que você postou, então a solução está abaixo:
#!/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 "${data}" | awk -F: 'BEGIN{
printf ("%s\t\t%s\t%s\n","Date", "User", "Size")
}
/lastUpdateTime/ {next}
/date/ { gsub(/\"|,|\s/,""); gsub(/T.+$/,""); printf ("%s\t", $2) }
/user/ { gsub(/\"|,|\s/,""); printf ("%s\t", $2) }
/size/ { gsub(/\"|,|\s/,""); printf ("%s\n", $2) }
'