Vyhledávání na webu

6 nejlepších nástrojů CLI pro vyhledávání dat ve formátu prostého textu pomocí regulárních výrazů


Tato příručka vás provede některými z nejlepších nástrojů příkazového řádku, které se používají k vyhledávání odpovídajících řetězců nebo vzorů v textových souborech. Tyto nástroje se obvykle používají spolu s regulárními výrazy – zkrácenými jako REGEX – což jsou jedinečné řetězce pro popis vzoru vyhledávání.

Bez dlouhého otálení se pojďme ponořit.

1. Příkaz Grep

Na prvním místě je nástroj grep – je to zkratka pro Global Regular Expression Print, je to výkonný nástroj příkazového řádku, který se hodí při hledání konkrétního řetězce nebo vzoru v souboru. .

Grep se ve výchozím nastavení dodává s moderními distribucemi Linuxu a poskytuje vám flexibilitu vracet různé výsledky vyhledávání. S grep můžete provádět širokou škálu funkcí, jako jsou:

  • Vyhledejte řetězce nebo odpovídající vzory v souboru.
  • Vyhledejte řetězce nebo odpovídající vzory v souborech Gzip.
  • Spočítejte počet shod řetězců.
  • Vytiskněte čísla řádků, která obsahují řetězec nebo vzor.
  • Rekurzivně vyhledejte řetězec v adresářích.
  • Proveďte zpětné vyhledávání (tj. zobrazte výsledky řetězců, které neodpovídají kritériím vyhledávání).
  • Při hledání řetězců ignorujte rozlišení velkých a malých písmen.

Syntaxe pro použití příkazu grep je poměrně jednoduchá:

grep pattern FILE

Chcete-li například v souboru vyhledat řetězec ‚Linux‘, řekněme hello.txt a ignorovat rozlišení velkých a malých písmen, spusťte příkaz:

grep -i Linux hello.txt

Chcete-li získat další možnosti, které můžete použít s grep, jednoduše si přečtěte náš článek, který uvádí příklady pokročilejších příkazů grep.

2. sed Příkaz

Sed – zkratka pro Stream Editor – je další užitečný nástroj příkazového řádku pro manipulaci s textem v textovém souboru. Sed vyhledává, filtruje a nahrazuje řetězce v daném souboru neinteraktivním způsobem.

Ve výchozím nastavení příkaz sed vytiskne výstup do STDOUT (Standard Out), což znamená, že výsledek provedení se vytiskne na terminálu místo uložení do souboru.

Příkaz Sed se vyvolá následovně:

sed -OPTIONS command [ file to be edited ]

Chcete-li například nahradit všechny instance „Unix“ výrazem „Linux“, vyvolejte příkaz:

sed 's/Unix/Linux' hello.txt

Pokud chcete výstup přesměrovat místo jeho tisku na terminálu, použijte přesměrovací znak ( > ), jak je znázorněno.

sed 's/Unix/Linux' hello.txt > output.txt

Výstup příkazu se místo vytištění na obrazovku uloží do souboru output.txt.

Chcete-li zjistit více možností, které lze použít, znovu se podívejte na manuálové stránky.

man sed

3. Potvrďte příkaz

Ack je rychlý a přenosný nástroj příkazového řádku napsaný v Perlu. Ack je považováno za přátelskou náhradu za grep utility a výstupy jsou vizuálně přitažlivé.

Příkaz Ack vyhledá v souboru nebo adresáři řádky, které obsahují shodu kritérií vyhledávání. Poté zvýrazní odpovídající řetězec v řádcích.
Ack má schopnost rozlišit soubory na základě jejich přípon souborů a do určité míry i obsahu v souborech.

Syntaxe příkazu Ack:

ack [options] PATTERN [FILE...]
ack -f [options] [DIRECTORY...]

Chcete-li například vyhledat hledaný výraz Linux, spusťte:

ack Linux hello.txt

Vyhledávací nástroj je poměrně inteligentní a pokud uživatel neposkytne žádný soubor nebo adresář, prohledá aktuální adresář a podadresáře pro vyhledání vzoru.

V níže uvedeném příkladu nebyl poskytnut žádný soubor ani adresář, ale ack automaticky detekoval dostupný soubor a vyhledal odpovídající poskytnutý vzor.

ack Linux

Chcete-li nainstalovat ack do systému, spusťte příkaz:

sudo apt install ack-grep    [On Debian/Ubuntu]
sudo dnf install ack-grep    [On CentOS/RHEL]

4. Příkaz Awk

Awk je plnohodnotný skriptovací jazyk a také nástroj pro zpracování textu a manipulaci s daty. Prohledává soubory nebo programy, které obsahují vyhledávací vzor. Když je řetězec nebo vzor nalezen, awk provede akci se shodou nebo čárou a vytiskne výsledky na STDOUT.

Vzor AWK je uzavřen mezi složené závorky, zatímco celý program je uzavřen v jednoduchých uvozovkách.

Vezměme si nejjednodušší příklad. Předpokládejme, že tisknete datum svého systému, jak je znázorněno:

date

Předpokládejme, že chcete vytisknout pouze první hodnotu, což je den v týdnu. V takovém případě přepojte výstup do awk, jak je znázorněno:

date | awk '{print $1}'

Chcete-li zobrazit následující hodnoty, oddělte je čárkou, jak je znázorněno:

date | awk '{print $1,$2}'

Výše uvedený příkaz zobrazí den v týdnu a datum v měsíci.

Chcete-li získat další možnosti, které můžete použít s awk, jednoduše si přečtěte naši sérii příkazů awk.

5. Stříbrný hledač

Silver searcher je multiplatformní a opensource nástroj pro vyhledávání kódu podobný ack, ale s důrazem na rychlost. Usnadňuje vám vyhledání konkrétního řetězce v souborech v co nejkratším čase:

Syntaxe:

ag OPTIONS search_pattern /path/to/file

Chcete-li například vyhledat řetězec ‚Linux‘ v souboru hello.txt, vyvolejte příkaz:

ag Linux hello.txt

Pro další možnosti navštivte manuálové stránky:

man ag

6. Ripgrep

Nakonec tu máme nástroj příkazového řádku ripgrep. Ripgrep je multiplatformní nástroj pro vyhledávání vzorců regulárních výrazů. Je mnohem rychlejší než všechny dříve zmíněné vyhledávací nástroje a rekurzivně vyhledává v adresářích odpovídající vzory. Pokud jde o rychlost a výkon, žádný jiný nástroj nevyniká nad Ripgrep.

Ve výchozím nastavení bude ripgrep přeskakovat binární soubory/skryté soubory a adresáře. Také mějte na paměti, že ve výchozím nastavení nebude vyhledávat soubory, které jsou ignorovány soubory .gitignore/.ignore/.rgignore.

Ripgrep také umožňuje vyhledávat konkrétní typy souborů. Chcete-li například omezit vyhledávání na soubory Javascript, spusťte:

rg -Tsj

Syntaxe pro použití ripgrep je poměrně snadná:

rg [OPTIONS] PATTERN [PATH...]

Například. Chcete-li vyhledat výskyty řetězce ‘Linux’ v souborech umístěných v aktuálním adresáři, spusťte příkaz:

rg Linux

Chcete-li nainstalovat ripgrep do systému, spusťte následující příkazy:

sudo apt install ripgrep      [On Debian/Ubuntu]
sudo pacman -S ripgrep        [On Arch Linux]
sudo zypper install ripgrep   [On OpenSuse]
sudo dnf install ripgrep      [On CentOS/RHEL/Fedora]

Pro další možnosti navštivte manuálové stránky:

man rg

Toto jsou některé z nejpoužívanějších nástrojů příkazového řádku pro vyhledávání, filtrování a manipulaci s textem v Linuxu. Pokud máte další nástroje, o kterých si myslíte, že jsme vynechali, dejte nám vědět v sekci komentářů.