1. ホーム
  2. シェル

[解決済み】シェルパイプラインで`jq`を使用するには?

2022-04-07 01:45:58

質問

を取得することができないようです。 jq はシェルパイプラインで "通常"動作するようにします。 例えば

$ curl -s https://api.github.com/users/octocat/repos | jq | cat

の結果は jq は単にそのヘルプテキストを出力しているだけです*。 をリダイレクトしても同じことが起こります。 jq の出力をファイルに保存します。

$ curl -s https://api.github.com/users/octocat/repos | jq > /tmp/stuff.json

jq ttyから実行されていないと判断した場合、意図的にベールアウトするのでしょうか? どうすればこの動作を防げるでしょうか? jq をパイプラインで使用することはできますか?

Edit: 最近のバージョンでは、この問題はなくなったようです。 jq . 私は jq-1.6 で、上記の例は期待通りに動作します。


* <サブ (この例には 猫の無駄使い これは説明のためだけです)

解決方法は?

引数にフィルタを指定する必要があります。きれいな印刷以外のJSONをそのまま通過させるには jq はデフォルトで提供されているため、ID フィルタ . :

curl -s https://api.github.com/users/octocat/repos | jq '.' | cat