Často ve velkém souboru musíte hledat konkrétní řádek dat pohřbený někde uprostřed souboru. Namísto ručního procházení celým souborem můžete nechat příkaz grep vyhledat vás. Formát příkazového řádku pro příkaz grep je:
# grep [options] pattern [file]
Příkaz grep hledá buď na vstupu, nebo ve vámi zadaném souboru řádky, které obsahují znaky, které odpovídají zadanému vzoru. Výstupem z grep jsou řádky, které obsahují odpovídající vzor. Kvůli popularitě příkazu grep prošel během své životnosti mnoha vývojovými změnami. Do příkazu grep bylo přidáno mnoho funkcí. Pokud se podíváte na manuálové stránky příkazu grep, uvidíte, jak je univerzální.
Pokud chcete obrátit vyhledávání (výstupní řádky, které neodpovídají vzoru), použijte parametr -v:
$ grep -v t file1 one four five $
Pokud potřebujete najít čísla řádků, kde se nacházejí odpovídající vzory, použijte parametr -n:
$ grep -n t file1 2:two 3:three $
Pokud potřebujete pouze zjistit, kolik řádků obsahuje odpovídající vzor, použijte parametr -c:
$ grep -c t file1 2 $
Pokud potřebujete zadat více než jeden odpovídající vzor, použijte parametr -e k určení každého jednotlivého vzoru:
$ grep -e t -e f file1 two three four five $
Příklady příkazů grep
1. Chcete-li interpretovat PATTERN jako rozšířený regulární výraz:
# grep --extended-regexp PATTERN # grep -E PATTERN
2. Chcete-li interpretovat PATTERN jako seznam pevných řetězců:
# grep -F PATTERN # grep --fixed-strings PATTERN
3. Chcete-li interpretovat PATTERN jako základní regulární výraz:
# grep -G PATTERN # grep --basic-regexp PATTERN
4. Chcete-li interpretovat PATTERN jako regulární výraz Perlu:
# grep -P PATTERN # grep --perl-regexp PATTERN
5. Chcete-li jako vzor použít PATTERN:
# grep -e PATTERN, # grep --regexp=PATTERN
6. Chcete-li získat vzory ze FILE, jeden na řádek:
# grep -f FILE, --file=FILE
7. Chcete-li ignorovat rozlišení velkých a malých písmen jak ve PATTERN, tak ve vstupních souborech:
# grep -i PATTERN # grep --ignore-case PATTERN
8. Chcete-li obrátit smysl shody, vyberte neodpovídající řádky:
# grep -v PATTERN # grep --invert-match PATTERN
9. Chcete-li vybrat pouze řádky obsahující shody, které tvoří celá slova:
# grep -w PATTERN # grep --word-regexp PATTERN
10. Chcete-li vybrat pouze ty shody, které přesně odpovídají celému řádku:
# grep -x PATTERN # grep --line-regexp PATTERN
11. Ignorování velikosti písmen:
# grep -y PATTERN
12. Potlačení normálního výstupu; místo toho vytiskněte počet odpovídajících řádků:
# grep -c PATTERN # grep --count PATTERN
13. Barevné zobrazení:
# grep --color PATTERN
14. Potlačení normálního výstupu; místo toho vytiskněte název každého vstupního souboru, ze kterého se neočekává:
# grep -L # grep --files-without-match
15. Potlačení normálního výstupu; místo toho vypište název každého vstupního souboru, ze kterého byl vytištěn výstup:
# grep -l # grep --files-with-matches
16. Do klidu; nezapisovat nic na standardní výstup Okamžitě opustit s nulovým stavem, pokud je nalezena jakákoliv shoda:
# grep -q # grep --quiet # grep --silent
17. Chcete-li zastavit čtení souboru po NUM odpovídajících řádcích:
# grep -m NUM # grep --max-count=NUM
18. Chcete-li vytisknout pouze shodné (neprázdné) části shodného řádku:
# grep -o PATTERN # grep --only-matching PATTERN
19. Chcete-li potlačit chybové zprávy o neexistujících nebo nečitelných souborech:
# grep -s PATTERN # grep --no-messages PATTERN
20. Tisk bajtového offsetu založeného na 0 ve vstupním souboru před každým řádkem výstupu:
# grep -b PATTERN # grep --byte-offset PATTERN
21. Tisk názvu souboru pro každou shodu:
# grep -H PATTERN # grep --with-filename PATTERN
22. Chcete-li potlačit předponu názvů souborů na výstupu:
# grep -h PATTERN # grep --no-filename PATTERN
23. To Display vstup skutečně pocházející ze standardního vstupu jako vstup pocházející ze souboru LABEL:
# grep -cd PATTERN | grep --label=mysearch -H PATTERN
24. Chcete-li předřadit každému řádku výstupu číslo řádku založeného na 1 v jeho vstupním souboru:
# grep -n PATTERN # grep --line-number PATTERN
25. Chcete-li se ujistit, že první znak skutečného obsahu řádku leží na zarážce tabulátoru:
# grep -T PATTERN # grep --initial-tab PATTERN
26. Chcete-li hlásit odchylky bajtů ve stylu Unix:
# grep -u PATTERN # grep --unix-byte-offsets PATTERN
27. Pro Výstup nulového bajtu místo znaku, který normálně následuje za názvem souboru:
# grep -Z PATTERN # grep --null PATTERN
28. Chcete-li po odpovídajících řádcích vytisknout NUM řádků kontextu na konci:
# grep -A NUM PATTERN # grep --after-context=NUM PATTERN
29. Chcete-li vytisknout NUM řádků úvodního kontextu před odpovídajícími řádky:
# grep -B NUM PATTERN # grep --before-context=NUM PATTERN
30. Chcete-li vytisknout NUM řádků výstupního kontextu:
# grep -C NUM PATTERN # grep --context=NUM PATTERN
31. Chcete-li zpracovat binární soubor, jako by to byl text:
# grep -a PATTERN /tmp/bin # grep -text PATTERN /tmp/bin
32. Předpokládejme, že soubor je typu TYPE:
# grep --binary-files=TYPE PATTERN
33. Pro Pokud je vstupním souborem zařízení, FIFO nebo zásuvka, zpracujte jej pomocí AKCE:
# grep -D ACTION PATTERN # grep --devices=ACTION PATTERN
34. Komu Pokud je vstupním souborem adresář, použijte ke zpracování AKCI:
# grep -d ACTION PATTERN # grep --directories=ACTION PATTERN
35. Chcete-li přeskočit soubory, jejichž základní název odpovídá GLOB:
# grep --exclude=GLOB PATTERN
36. Chcete-li přeskočit soubory, jejichž základní název se shoduje s kterýmkoli z globů názvů souborů načtených z FILE:
# grep --exclude-from=FILE PATTERN
37. Chcete-li vyloučit adresáře odpovídající vzoru DIR z rekurzivního vyhledávání:
# grep --exclude-dir=DIR PATTERN
38. Chcete-li zpracovat binární soubor, jako by neobsahoval odpovídající data:
# grep -I PATTERN
39. Chcete-li hledat pouze soubory, jejichž základní název odpovídá GLOB:
# grep --include=GLOB
40. Chcete-li číst všechny soubory v každém adresáři, rekurzivně:
# grep -r PATTERN # grep -R PATTERN
41. Použití ukládání do vyrovnávací paměti na výstupu:
# grep --line-buffered PATTERN
42. Pokud je to možné, použijte ke čtení vstupu systémové volání mmap namísto výchozího čtení:
# grep --mmap PATTERN
43. Chcete-li považovat soubor(y) za binární:
# grep -U /tmp/file PATTERN # grep --binary /tmp/file PATTERN
44. Chcete-li zacházet se vstupem jako se sadou řádků:
# grep -z PATTERN # grep --null-data PATTERN
45. Zobrazení nápovědy:
# grep -h
46. Chcete-li vytisknout číslo verze grep:
# grep -V