GNU/Linux >> Znalost Linux >  >> Linux

Jak se popasovat s barevným výstupem

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í.


Linux
  1. Jak spustit vícevláknový Grep v terminálu?

  2. Jak hledat obsah po vzoru?

  3. Jak odstranit znak \r pomocí sed

  1. Jak převést výstup z grep do cp?

  2. Jak předat výstup příkazu jako více argumentů jinému příkazu

  3. Jak přesměrovat celý výstup spark-submit do souboru

  1. Jak spustit Grep s více a vzory?

  2. Jak zvýraznit slovo ve výstupu „kočka“?

  3. Jak grep ps výstup s hlavičkami