Cara lain adalah
{ grep ...; bzgrep ...;} >file
&&
memiliki kesulitan bahwa bzgrep
tidak akan dijalankan jika grep
gagal.
Perhatikan ruang wajib setelah kurung kurawal pembuka dan titik koma setelah perintah terakhir. Sebagai alternatif, Anda dapat menggunakan sintaksis subkulit (tanda kurung alih-alih kurung kurawal), yang tidak pilih-pilih:
(grep ...; bzgrep ...) >file
bzgrep secara otomatis default ke grep biasa jika file tidak dikompresi dengan bzip. Jadi, yang berikut ini sudah cukup:
bzgrep [email protected] maillog *bz2 | mail -s "logs yay" [email protected]
oh juga tentu saja ini solusi Paralel GNU wajib saya juga:
parallel -m bzgrep [email protected] ::: maillog* *bz2 | mail -s "logs yay" [email protected]
yang bisa jauh lebih cepat jika Anda memeriksa banyak file.
Inilah cara lain untuk melakukannya (dengan asumsi Anda menjalankan bash, yang mungkin Anda lakukan):
cat <(bzgrep ...) <(grep ...)
Di sini bash secara transparan memasukkan output dari perintah bzgrep dan grep ke dalam cat seolah-olah itu adalah file (dan mereka semacam berada di bawah terpal, detail di url di bagian bawah).
Dalam kasus khusus Anda, saya akan merekomendasikan solusi Phil, tetapi yang di atas adalah trik yang bagus untuk disimpan di tas Anda.
Jika Anda tertarik, Anda dapat membaca selengkapnya di sini:http://www.tldp.org/LDP/abs/html/process-sub.html