他のコマンドの出力を使用したファイルのフィルタリング

他のコマンドの出力を使用したファイルのフィルタリング

check_thisパイプで接続されたファイルに対して YES または NO を印刷する外部コマンドがあります。

cat myfile | check_this

YES
NO
YES
YES
...

これで、結果がYESのmyfileのすべての行を取得したいと思います。これを行う方法はありますか?現在は一時ファイルを使用し、別のファイルに保存して貼り付け+ grepを使用しますが、これは面倒で堅牢ではありません。

ベストアンサー1

私は以下を使用しますawk

<myfile check_this | awk '
  !check_processed {if ($1 == "YES") yes[FNR]; next}
  FNR in yes' - check_processed=1 myfile

awkハッシュテーブルの単語で始まる出力の行番号を記録し、check_thisそのハッシュテーブルに番号がある行を印刷します。YESyesmyfileyes

おすすめ記事