awk - 结合 awk 智能范围和 jq
问题描述
我有一个包含以下json
格式的多行文件,我想通过管道jq
提取几个字段。
格式是,
{"userData":[{"user":{"loginName":"TEST",....]}.
{"userData":[{"user":{"loginName":"TEST1",....]}.
....
代表“一些”json
数据。
我可以提取awk '/{\"userData\"/{p=1}; p; /}\./{p=0};'
似乎打印得很好的线条。
我遇到的困难是jq
在每一行上运行并提取json
字段。如何使用单个awk
命令来实现这一点?
解决方案
如果这些句点实际上出现在行尾,那么该文件的内容就不是纯粹的 json。如果该文件中的每一行都是一个单独的 json 对象,后跟一个句点,您可以读取原始文件(将文件中的每一行作为字符串作为输入传递),去掉句点,然后解析 json 并处理像平常一样。
例如,转储所有用户登录名:
$ jq -R '.[:-1] | fromjson | .userData[].user.loginName' input.txt
推荐阅读
- azure - Azure B2C 租户失败,出现错误“租户创建失败”。
- javascript - 复选框 isChecked 不影响价格
- unit-testing - 开玩笑测试 Vue 组件抛出错误“无法读取未定义的'key'...”
- python - 使用 Flask Python 创建 POST 任意路径路由
- c++ - 如果可能,取消引用指向类型的 C++ 指针
- kivy - 基维。在一个变量中设置前端和后端的颜色
- c# - 即使没有文件,StreamReader 也不会抛出 FileNotFound 异常,它应该
- c# - 使用 NUnit 和 Moq 测试 Void 方法调用其他 Void 方法
- sql - 通过连接表 B 和表 A 更新表 A
- odoo - 以编程方式编辑 odoo 网站内容