Json
使用 jq 在 JSON 數組中創建逗號分隔的列表欄位
我正在嘗試使用
jq
將 JSON 數組中的值連接到單行逗號分隔列表中。(沒有尾隨逗號){ "hardware": [ "abc", "def", "ghi" ] }
創建“abc、def、ghi”
我可以使用將值連接在一起
jq -jr '(.hardware[])' input.json abcdefghi
我試圖插入逗號和空格,但無法工作
jq -jr '(.hardware[]|join(", ")' jq: error: syntax error, unexpected $end (Unix shell quoting issues?) at <top-level>, line 1: (.hardware[]|join(", ")
有人可以指出我要使用的正確語法嗎?
謝謝
電社
你正在尋找
jq -r '.hardware | join(", ")'
您發布的版本中的語法錯誤是因為開頭
(
沒有匹配的)
,但無論如何join
都需要一次給出所有值,所以.hardware
比.hardware[]
(一次將它們傳遞一個)要好。
您的
jq
表達式包含不平衡的括號。該join()
函式還需要一個數組,而不是單個值(使用.hardware | join(", ")
而不是.hardware[] | join(", ")
)。如果您想要正確格式化的 CSV 輸出,您可以使用表達式
.hardware | @csv
:$ jq -r '.hardware | @csv' file.json "abc","def","ghi"