Jedním z mocných a široce používaných příkazů v shellu je grep. Vyhledá ve vstupním souboru a porovná řádky, ve kterých je daný vzor nalezen. Ve výchozím nastavení jsou všechny odpovídající vzory vytištěny na stdout, který je obvykle terminál. Můžeme také přesměrovat odpovídající výstup do jiných streamů, jako je soubor.
Základní použití grep je toto:
$ grep "some text" file.txt
grep je schopen barevně zvýraznit odpovídající řetězec ve svém výstupu. Ve výchozím nastavení je však tato možnost vypnutá.
$ grep abc a_file.txt abcdef
Značka —-color Parametr říká grepu, aby obarvil hledané výrazy ve výstupu, což jim pomáhá vyniknout mezi ostatním textem na řádku. Pomocí GREP_COLOR si vyberete, jakou barvu chcete proměnná prostředí:exportem GREP_COLOR=36 získáte azurovou a exportem GREP_COLOR=32 získáte limetkově zelenou.
K dispozici máte 3 barevné možnosti:
- –color=auto
- –barva=vždy
- –color=never
S color=always vybarví odpovídající řetězec.
$ grep --color=always abc a_file.txt abcdef
Docela často chcete listovat výstupem:
$ grep --color=always abc a_file.txt | less ESC[01;31mabcESC[00mdef (END)
Problém je v tom, že méně těm řídicím znakům ve výchozím nastavení nerozumí. Musíte použít parametr -R.
$ grep --color=always abc a_file.txt |less -R abcdef
Případně použijte více.
$ grep --color=always abc a_file.txt | more abcdef
Dalším problematickým scénářem je, když chcete uložit výstup grep do souboru. Výstupní soubor bude obsahovat tyto řídicí znaky.
$ grep --color=always abc a_file.txt > myoutput.txt $ less myoutput.txt ESC[01;31mabcESC[00mdef myoutput.txt (END)
S color=auto zobrazuje barvu ve výstupu, pokud není výstup přesměrován do příkazu nebo přesměrován do souboru.
Nakonec můžete zadat parametr color v proměnné prostředí specifické pro grep. Potom jej nemusíte zadávat do příkazového řádku.
$ export GREP_OPTIONS='--color=always'
Poznámka na závěr
Příkaz grep je jedním z nejužitečnějších a nejvýkonnějších v arzenálu terminálu. Jeho předpoklad je jednoduchý:daný jeden nebo více souborů vytiskne všechny řádky v těchto souborech, které odpovídají konkrétnímu vzoru regulárního výrazu. Chcete-li zvýraznit odpovídající vzor, použijte volbu -color. I když na pozici opce nezáleží, konvencí je umístit opce jako první.