出力をフィルタリングしてリダイレクトする方法

出力をフィルタリングしてリダイレクトする方法

STDOUTで多くの出力を生成するコマンドがあり、次のようにそれをファイルにリダイレクトできることがわかります。

./myCMD 1>tmp

出力をファイルにリダイレクトする前にフィルタリングする方法たとえば、特定のキーワードを含む出力行のみをリダイレクトしたいとします。

ベストアンサー1

tmp特定の行だけをファイルに入れ、残りを変更したくない場合:

cmd | awk '/pattern/ {print > "tmp"; next}
           {print}'

または:

cmd | sed '/pattern/!b
           w tmp
           d'

(一行cmd | sed -e '/pattern/!b' -e 'w tmp' -e d:)

または:

cmd | sed '/pattern/ {
             w tmp
             d
           }'

(一行cmd | sed -e '/pattern/{w tmp' -e 'd;}':)

sedについてpattern基本的な正規表現であるのに対し、についてはawk次のとおりです。拡大する正規表現。

おすすめ記事