一千萬個為什麽

搜索

我如何管道jq輸出



我最近了解到一個傑出的小工具, jq ,它允許你管理未格式化的JSON輸出,然後將輸出重新格式化並以非常好的格式化顏色編碼的json布局輸出到屏幕。例如:

echo '{"value": "New", "onclick": "CreateNewDoc()"}' | jq

然而,我發現我無法將格式化結果(從jq)轉換為標準工具集中的其他工具,例如grep,sed,awk等。我怎樣才能使這個輸出成為可管的?例如,這不起作用:

'{"value": "New", "onclick": "CreateNewDoc()"}' | jq | grep value

轉載註明原文: 我如何管道jq輸出

一共有 1 個回答:

好吧,試著完全忽略你的問題,會發生什麽情況如下:

$ echo '{"value": "New", "onclick": "CreateNewDoc()"}' | jq | grep value
jq - commandline JSON processor [version 1.5-1-a5b5cbe]
Usage: jq [options]  [file...]
[rest of output is omitted for brevity]

在這裏閱讀的重要內容是使用線(重點是我的):

Usage: jq [options] [file...]

該過濾器不是可選的,如果你沒有給出,jq嘗試解析命令行的其余部分作為它的過濾器並拋出一個錯誤,這裏的解決方法是:

$ echo '{"value": "New", "onclick": "CreateNewDoc()"}' | jq '.' | grep value
  "value": "New",

確實grep“價值”線作為過濾器通過是'。'它只是漂亮地打印json內容,但這與jq的最佳使用相差甚遠,如果你只想得到這一行,你最好這樣做:

$ echo '{"value": "New", "onclick": "CreateNewDoc()"}' | jq '.value'
"New"

如果你希望不帶引號的值,那麽將 -r 選項添加到jq中,如:

$ echo '{"value": "New", "onclick": "CreateNewDoc()"}' | jq -r '.value'
New

來自 jq --help

-r輸出原始字符串,而不是JSON文本;

這是對jq的一個簡單介紹,這可能不足以解決您的問題,但因為您沒有指定您的問題,所以我無法再提供更多的幫助。