bash
ツールの組み合わせをxargs
と組み合わせて使用することができます。コマンドからエラー文字列を受け取ったと仮定すると、tilde (=~)
演算子を使用してbash
のregEx
にパイプすることができます。あなたが必要なキーの値を取得し、このregEx
を持つ文字列の平野echo
をやっ
.*\ ([[:alnum:]]+)$
すなわち。フォーム
$ <command-returning-string> | while IFS= read -r line; do [[ $line =~ .*\ ([[:alnum:]]+)$ ]] && printf "%s\n" "${BASH_REMATCH[1]}"; done
の
$ echo "W: GPG error: http://ppa.launchpad.net hardy Release: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY EED4D034D81367B9" | while IFS= read -r line; do [[ $line =~ .*\ ([[:alnum:]]+)$ ]] && printf "%s\n" "${BASH_REMATCH[1]}"; done
EED4D034D81367B9
すなわち、コマンドラインで以下のコマンドを実行すると、今、あなたが言ったように、あなたは、パイプライン内の別のコマンドにこのキーを渡したいです。今すぐxargs
が救助に来ます。キーは今{}
中に存在し、
$ <command-returning-string> | <command-returning-key> | xargs -I{} <your-next-command> {}
あなたとあなたの次のコマンドへの引数/入力として渡すことができる。すなわち
xargs
で-I{}
フラグを指定すると、{}
は、前のコマンドから返されたキーのプレースホルダになり文字列から 'EED4D034D81367B9'ワードを取得したいですか?それは特定のコマンドのファイル(または)出力に存在していますか?あなたはどちらのシェルを使っていますか? 'bash'がインストールされていますか? – Inianその文字列は、古い(Ubuntu 8.04)VMで "sudo apt-get update"コマンドを発行した結果の出力です。そして、はい、私はbashをインストールしました - 私はbashスクリプトの一部としてこれをすべて処理しようとしていますので、ユーザにシームレスです。 –