別の方法は
{ grep ...; bzgrep ...;} >file
&&
bzgrep
という難しさがあります grep
の場合は実行されません 失敗しました。
開き中かっこの後の必須スペースと、最後のコマンドの後のセミコロンに注意してください。または、サブシェル構文 (中括弧の代わりに括弧) を使用することもできます。
(grep ...; bzgrep ...) >file
ファイルが bzip 圧縮されていない場合、bzgrep は自動的に通常の grep をデフォルトに設定します。したがって、以下で十分です:
bzgrep [email protected] maillog *bz2 | mail -s "logs yay" [email protected]
ああ、もちろん、これも私の必須の GNU Parallel ソリューションです:
parallel -m bzgrep [email protected] ::: maillog* *bz2 | mail -s "logs yay" [email protected]
多数のファイルをチェックしている場合は、はるかに高速になる可能性があります。
これを行う別の方法を次に示します (おそらく bash を実行していると仮定します):
cat <(bzgrep ...) <(grep ...)
ここで、bash は bzgrep および grep コマンドの出力をあたかもファイルであるかのように透過的に cat にフィードします (そして、それらは一種のフードの下にあり、下部の URL に詳細があります)。
あなたの特定のケースでは、Phil のソリューションをお勧めしますが、上記はバッグに入れておくとよいトリックです。
興味がある場合は、こちらで詳細を読むことができます:http://www.tldp.org/LDP/abs/html/process-sub.html