GNU/Linux >> Znalost Linux >  >> Linux

Použití grep vs awk

grep bude s největší pravděpodobností rychlejší:

# time awk '/USAGE/' imapd.log.1 | wc -l
73832

real    0m2.756s
user    0m2.740s
sys     0m0.020s

# time grep 'USAGE' imapd.log.1 | wc -l
73832

real    0m0.110s
user    0m0.100s
sys     0m0.030s

awk je interpretovaný programovací jazyk, kde jako grep je zkompilovaný program v c-kódu (který je navíc optimalizován pro vyhledávání vzorů v souborech).

(Poznámka – oba příkazy jsem spustil dvakrát, aby ukládání do mezipaměti potenciálně nezkreslilo výsledky)

Další podrobnosti o interpretovaných jazycích na wikipedii.

Jak Stephane správně zdůraznil v komentářích, váš počet najetých kilometrů se může lišit v závislosti na implementaci grep a awk, které používáte, na operačním systému, který používáte, a na znakové sadě, kterou zpracováváte.


Použijte nejkonkrétnější a nejvýraznější nástroj. Nástroj, který nejlépe vyhovuje vašemu případu použití, bude pravděpodobně nejrychlejší.

Jako hrubý návod:

  • hledáte řádky odpovídající podřetězci nebo regulárnímu výrazu? Použijte grep.
  • vybíráte určité sloupce z jednoduše odděleného souboru? Použijte řez.
  • provádění substitucí založených na vzorech nebo ... jiné věci, které sed rozumně umí? Použijte sed.
  • potřebujete nějakou kombinaci výše uvedených 3 nebo formátování printf nebo obecné smyčky a větve? Použijte awk.

Když hledáte pouze řetězce a záleží na rychlosti, měli byste téměř vždy používat grep . Je řádově rychlejší než awk pokud jde o pouhé hrubé vyhledávání.

source Funkční a výkonnostní rozdíly sed, awk a dalších unixových nástrojů pro analýzu

UTILITY    OPERATION TYPE      EXECUTION TIME     CHARACTERS PROCESSED PER SECOND
                               (10 ITERATIONS)
-------    --------------      ---------------    -------------------------------
grep       search only         41 sec.            489.3 million
sed        search & replace    4 min. 4 sec.      82.1 million
awk        search & replace    4 min. 46 sec.     69.8 million
Python     search & replace    4 min. 50 sec.     69.0 million
PHP        search & replace    15 min. 44 sec.    21.2 million

Linux
  1. Použití grep pro vyhledávání obráceně

  2. Jak sloučit dva soubory pomocí AWK?

  3. Odeberte konkrétní znak pomocí awk nebo sed

  1. Jak odstranit předponu slova pomocí grep?

  2. pomocí awk s podmínkami hodnoty sloupce

  3. Vysvětlení příkazu awk pomocí ORS, NR, FS, RS

  1. Shoda víceřádkového vzoru pomocí Sed, Awk nebo Grep?

  2. Zachyťte skupiny pomocí Awk nebo Grep?

  3. grep pro termín a vyloučit jiný termín