tes*_*est 3 unix bash awk json jq
我有一堆两列日志,由制表符分隔.第二列是有效的JSON:
2019-02-28T19:43:48.585Z {"id": 1234, "catId": 42, "img": "other.jpg"}
2019-02-28T19:44:48.585Z {"id": 4321, "catId": 999, "img": "my.jpg"}
2019-02-28T19:44:48.585Z {"id": 1234, "catId": 42, "img": "new.jpg"}
2019-02-28T19:46:48.585Z {"id": 1234, "catId": 765, "img": "cat.jpg"}
Run Code Online (Sandbox Code Playgroud)
我的目标是保留timestamp列,并打印catId
属性:
2019-02-28T19:43:48.585Z 42
2019-02-28T19:44:48.585Z 999
2019-02-28T19:44:48.585Z 42
2019-02-28T19:46:48.585Z 765
Run Code Online (Sandbox Code Playgroud)
我尝试迄今已插jq
有awk
,但我与挣扎的system
命令.
awk -F '\t' '{printf "\n %s \t %s \n", $1, system("jq .catId <<< " $2)}' file
Run Code Online (Sandbox Code Playgroud)
我们非常感谢任何正确方向的帮助.
如果文件是制表符分隔的,则可以在原始文件中读取文件,在选项卡上拆分,解析并解压缩json,然后重新加入选项卡.
$ jq -Rr 'split("\t") | .[1] |= fromjson.catId | join("\t")' input.log
Run Code Online (Sandbox Code Playgroud)