Archlinuxでgrep / awkを使用して、リストからインストールされていないプログラムの数を確認してください。

Archlinuxでgrep / awkを使用して、リストからインストールされていないプログラムの数を確認してください。

リストからインストールされていないパッケージがいくつあるかを確認したいと思います。私はArchlinuxを使用しているので、pacman -Qを使用してパッケージがインストールされていることを確認します。インストールされていない場合は、「エラー: 'パッケージ名'パッケージが見つかりません。」などのメッセージが返されます。

次のように使用できると思いますgrep -c 'error'

pacman -Q autoconf automake binutils bison fakeroot flex gcc libtool m4 make patch pkg-config | grep -c 'error'

しかし、私には次のように返されます。

エラー: 'bison'パッケージが見つかりません。
エラー: 'pkg-config'パッケージが見つかりません。
0

0を返しますが、2を返したいです。 awkを使用しても機能しません。

pacman -Q autoconf automake binutils bison fakeroot flex gcc libtool m4 make patch pkg-config | awk '/error: / {count++} END {print count}'

私にとって、これは次を返します。

エラー: 'bison'パッケージが見つかりません。
エラー: 'pkg-config'パッケージが見つかりません。

だから私の考えでは、変数がcount印刷されないので値さえ持っていないようです。私も試してみましたが、うまくいかずにwc -l0を返します。

削除されたパッケージの数を印刷する正しい方法は何ですか?

編集:これを行ったときに、次のことが見つかりました。

pacman -Q autoconf automake binutils bison fakeroot flex gcc libtool m4 make patch pkg-config > tempfile  
cat tempfile

エラーメッセージを含む2行は追加されませんtempfile(残りのコマンド出力は追加されます)。これが問題を解決するのに役立つと思いました。

ベストアンサー1

問題は、エラーメッセージSTDOUTがに送信されないことですSTDERRSTDERRまた、次のように明示的にリダイレクトする必要があります。

pacman -Q bison patch pkg-config 2>&1 | grep -c 'error'

bashやzshなどがある場合は、|&自動リダイレクトSTDOUTも使用できますSTDERR

pacman -Q bison patch pkg-config |& grep -c 'error'

おすすめ記事