Linux

將多個 unix 命令合併為一個輸出

  • September 7, 2017

我需要在我們的郵件日誌中搜尋特定的電子郵件地址。我們在同一個文件夾中保留了一個名為maillog的目前文件以及一周的 .bz2 文件。目前,我正在執行以下命令來搜尋文件:

grep person@domain.com maillog
bzgrep person@domain.com *.bz2

有沒有辦法將grepandbzgrep命令組合成一個輸出?這樣,我可以將組合結果通過管道傳輸到單個電子郵件或單個文件。

另一種方法是

{ grep ...; bzgrep ...;} >file

&&有如果失敗bzgrep就不會執行的困難。grep

請注意最後一個命令後的左大括號和分號後的強制空格。或者,您可以使用不那麼挑剔的 subshel​​l 語法(括號而不是花括號):

(grep ...; bzgrep ...) >file

如果文件未經過 bzip 壓縮,bzgrep 會自動預設為正常 grep。因此,以下內容就足夠了:

bzgrep person@domain.com maillog *bz2 | mail -s "logs yay" someuser@blah

哦,當然這也是我的強制性GNU Parallel解決方案:

parallel -m bzgrep person@domain.com ::: maillog* *bz2 | mail -s "logs yay" someuser@blah

如果您要檢查大量文件,這可能會快很多。

引用自:https://serverfault.com/questions/244917