GNU/Linux >> Linux の 問題 >  >> Linux

複数の UNIX コマンドを 1 つの出力に結合する

別の方法は

{ 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


Linux
  1. Unix Sed チュートリアル:複数の Sed コマンドを実行する方法

  2. 複数行の出力を 1 行に連結する方法は?

  3. 複数のファイルの内容を 1 つのファイルに追加する方法

  1. 1 つのテキスト ファイルを複数の *.txt ファイルに分割する方法は?

  2. コマンド出力を複数の引数として別のコマンドに渡す方法

  3. 複数のファイルを1つのgzファイルにgzipする方法は?

  1. Stdoutに出力し、同時にGrepをファイルに出力しますか?

  2. 複数のサーバー間で「ps」を送信し、出力を1つのテキストファイルに送信しますか?

  3. UNIXのtimeコマンドの出力をbashの変数にリダイレクトしますか?