GNU/Linux >> Znalost Linux >  >> Linux

Kombinujte více unixových příkazů do jednoho výstupu

Dalším způsobem je

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

&& má potíže s bzgrep nespustí se, pokud grep selhalo.

Všimněte si povinné mezery za úvodní složenou závorkou a středníkem za posledním příkazem. Případně můžete použít syntaxi subshell (závorky místo složených závorek), což není tak náročné:

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

bzgrep se automaticky nastaví na běžný grep, pokud soubor není komprimovaný bzip. Mělo by tedy stačit následující:

bzgrep [email protected] maillog *bz2 | mail -s "logs yay" [email protected]

a samozřejmě zde je také moje povinné řešení GNU Parallel:

parallel -m bzgrep [email protected] ::: maillog* *bz2 | mail -s "logs yay" [email protected]

což by mohlo být mnohem rychlejší, pokud kontrolujete hodně souborů.


Zde je další způsob, jak to udělat (za předpokladu, že používáte bash, což pravděpodobně máte):

cat <(bzgrep ...) <(grep ...)

Bash zde transparentně dodává výstup příkazů bzgrep a grep do cat, jako by to byly soubory (a jsou tak trochu pod pokličkou, podrobnosti v url dole).

Ve vašem konkrétním případě bych doporučil Philovo řešení, ale výše uvedené je dobrý trik, který byste měli mít v tašce.

Pokud máte zájem, můžete si přečíst více zde:http://www.tldp.org/LDP/abs/html/process-sub.html


Linux
  1. Výstup do Stdout a zároveň Grep do souboru?

  2. Jak lze zkombinovat řadu prohlášení Grep spojených dohromady do jednoho prohlášení Grep?

  3. Výuka Unix Sed:Jak provádět více příkazů Sed

  1. Sloučit / převést více souborů PDF do jednoho PDF

  2. Jak připojit obsah více souborů do jednoho souboru

  3. Jak gzipovat více souborů do jednoho souboru gz?

  1. Odesláním „ps“ na více serverech se výstup přesune do jednoho textového souboru?

  2. Jak sloučit více připojení k internetu do jednoho?

  3. MultiCD – Shell Script pro spojení více zaváděcích ISO do jednoho CD