这是我的示例数据。我需要过滤“名称”字段并为每个包含“邮件”的名称打印对名称,URL:
源数据:
[
{
"name": "Yahoo",
"url": "https://www.yahoo.com/"
},
{
"name": "Yahoo Mail",
"url": "https://mail.yahoo.com/"
},
{
"name": "Google",
"url": "https://www.google.com/"
},
{
"name": "Google Mail (Gmail)",
"url": "https://gmail.com/"
}
]
所需的输出:
Yahoo Mail
https://mail.yahoo.com/
Google Mail (Gmail)
https://gmail.com/
如何在jq中做到这一点?
到目前为止,这可以找到包含“邮件”的所有“名称”,但是我也如何打印“ URL”?
jq -r '.[].name | select(test("Mail";"i"))'
产生输出:
Yahoo Mail
Google Mail (Gmail)
答案 0 :(得分:2)
您的代码选择名称,而您想选择名称的父对象。按照以下步骤可产生所需的输出。
jq -r '.[] | select(.name|test("Mail"; "i"))[]' file