结合AWK智能范围和JQ

时间:2019-03-04 09:22:18

标签: awk jq

我有一个文件,该文件包含以下json格式的多行内容,我希望将该文件通过管道传递到jq,以提取少量字段。

格式为

{"userData":[{"user":{"loginName":"TEST",....]}.

{"userData":[{"user":{"loginName":"TEST1",....]}.

....代表“某些” json数据。

我可以用awk '/{\"userData\"/{p=1}; p; /}\./{p=0};'提取行,看起来好像打印得很好。

我遇到的困难是在每一行上运行jq并提取json字段。如何用单个awk命令来实现?

1 个答案:

答案 0 :(得分:1)

如果这些句点实际上出现在行尾,则该文件的内容不是纯粹的json。 如果该文件中的每一行都是单个json对象,紧随其后是一个句点,那么您可以原始读取文件(文件中的每一行作为输入作为输入传递),去掉句点,然后像往常一样解析json并进行处理。

例如,转储所有用户登录名:

$ jq -R '.[:-1] | fromjson | .userData[].user.loginName' input.txt