簡體   English   中英

如何優化jq輸出

[英]how to refine jq output

我有一個json文件。 一個簡單的示例如下所示:

[
{
  "host": "a.com",
  "ip": "1.2.2.3",
  "port": 8,
  "name":"xyz"
},
{
  "host": "b.com",
  "ip": "2.5.0.4",
  "port": 3,
  "name":"xyz"

},
{
  "host": "c.com",
  "ip": "9.17.6.7",
  "port": 4,
  "name":"xyz"
}
]

我想提取“主機”和“ ip”值,並將它們添加到以逗號分隔的值文件中。 每條記錄中的一行如下:

a.com,1.2.2.3
b.com,2.5.0.4
c.com,9.17.6.7

我安裝了jq庫來解析json文件。 我執行了以下命令:

cat test.json | jq '.[] | {host: .host, ip: .ip}'

我得到的輸出如下:

{
  "host": "a.com",
  "ip": "1.2.2.3"
}
{
  "host": "b.com",
  "ip": "2.5.0.4"
}
{
  "host": "c.com",
  "ip": "9.17.6.7"
}

有什么方法可以根據需要提取輸出? jq生成的此輸出需要其他腳本來解析它,並將所需的值保存為csv格式(一行中的一項)。

刪除引號:

$ cat test.json | jq -r '.[] | [ .host, .ip ] | @csv' | sed 's/"//g'
a.com,1.2.2.3
b.com,2.5.0.4
c.com,9.17.6.7

如果使用OS X,請使用Homebrew安裝GNU sed

使用@csv格式從值數組生成CSV輸出。

cat test.json | jq -r '.[] | [.host, .ip] | @csv'

需要-r選項來獲取原始輸出,而不是JSON,這將在結果周圍包裹額外的引號並轉義包圍每個字段的引號。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM