Téma Jannah Licencia nie je overená. Prejdite na stránku možností témy a overte licenciu. Pre každý názov domény potrebujete jednu licenciu.

Skutočný rozdiel medzi grep a ripgrep a ktorý je lepší na vyhľadávanie súborov

grep? ripgrep? Strieborný hľadač? Aký je najlepší nástroj na vyhľadávanie textu v súboroch?

Programátori a používatelia systému čelia dennej úlohe prehľadávať stovky alebo tisíce textových súborov. Tu sa nachádzajú nástroje ako grep وripgrep وSilver Searcher Ktoré z efektívnych riešení ponúka najlepší výkon?

52849124270_37375d86a3_o Skutočný rozdiel medzi grep a ripgrep a ktorý je lepší na vyhľadávanie súborov
Hoci grep je klasický nástroj, na ktorý sa všetci spoliehajú už desaťročia, moderné alternatívy ako ripgrep a The Silver Searcher ponúkajú výrazné vylepšenia v rýchlosti, presnosti a jednoduchosti používania.
V tomto článku si pozrieme skutočné rozdiely medzi nimi a porovnáme výkon a funkcie, aby sme určili, ktorý nástroj si zaslúži byť vašou primárnou voľbou na vyhľadávanie v súboroch.

grep je nástroj používaný na vyhľadávanie fulltextových súborov prostredníctvom príkazového riadku. Existujú však aj iné alternatívy, ako napríklad ripgrep, ag a sift. Je však vhodné prejsť na iný nástroj? A ak áno, ktorý vyhľadávací nástroj uprednostňujete? Poďme to zistiť.

Ako funguje grep?

`grep` je jeden z najužitočnejších nástrojov v Linuxe a existuje ním už pol storočia. Jeho názov je skratka pre Global Regular Expression Print (Globálny výpis regulárnych výrazov), ale v skutočnosti je odvodený od starého príkazu `ed`: `g /re /p`. Tento príkaz je vynikajúci na vyhľadávanie textu, najmä pomocou výkonného jazyka regulárnych výrazov.

Môžete začať jednoducho, so základným textovým vyhľadávaním:

grep 'TODO' journal.md

Nakoniec budete môcť vytvárať zložité zhody vzorov:

grep -E "^([0-9]{4})-([0-9]{2})-([0-9]{2})" dates.txt

Tento príklad demonštruje obrovskú silu príkazu grep: používa rozšírené regulárne výrazy na zhodu riadkov, ktoré začínajú jednoduchým dátumom ISO, napríklad 2025-10-26. Príkaz grep môžete použiť aj vo svojich kanáloch na dosiahnutie vynikajúcich výsledkov. Napríklad tento príkaz okamžite načíta riadky z protokolu Apache, ak server odošle stav „neupravený“:

tail -f /var/log/apache2/access_log | grep '" 304'

A ešte jedna skvelá funkcia príkazu grep: iteratívne vyhľadávanie. Spustením príkazu `grep -r pattern` sa prehľadajú všetky súbory vo vašom aktuálnom priečinku a mimo neho a zobrazia sa všetky zodpovedajúce výsledky. Vďaka tomu je grep ideálnym nástrojom na vyhľadávanie súborov obsahujúcich ľubovoľný textový vzor, ​​ktorý potrebujete vyhľadať.

grep -ri todo

Čo robí ripgrep jedinečným?

Grip je široko používaný program, možno viac ako ktorýkoľvek iný, na demonštráciu sily Unixu: cielené programy, ktoré spolupracujú a komunikujú prostredníctvom textového prenosu údajov. Prečo teda hľadať iný program?

Prečítajte si tiež:  Kedy by ste sa mali vyhnúť používaniu Ext4 v Linuxe a zvoliť iné súborové systémy?

ripgrep je populárna a moderná alternatíva k grepu a jedno z najlepších vylepšení predvolených príkazov, ktoré si môžete vytvoriť. Môžete ho nainštalovať pomocou širokej škály správcov balíkov, napríklad pomocou príkazov ako `brew install ripgrep`, `sudo apt-get install ripgrep` alebo `sudo dnf install ripgrep`. Príslušný príkaz pre váš systém. Po inštalácii Spustíte ho ako rg (nie ripgrep) s použitím podobného prístupu ako grep. Napríklad, ak chcete nájsť všetky adresy v súbore Markdown:

rg '^#' README.md

Skoršia verzia ripgrepu prišla v roku 2016 a využívala výhody relatívne nového programovacieho jazyka Rust. Celkovo je ripgrep vďaka niektorým vynikajúcim vylepšeniam modulárneho výrazového enginu Rustu rýchlejší ako alternatívy, najmä grep, ktorý môže byť až desaťkrát pomalší.

Túto výhodu v rýchlosti si pri každodennom používaní možno nevšimnete. Ak však vykonávate dlhodobé vyhľadávania – najmä iteratívne vyhľadávania vo viacerých súboroch a so zložitejšími vzormi – ripgrep môže ponúknuť značné výhody. Iteratívne vyhľadávanie je predvoleným nastavením ripgrepu, takže na vyhľadanie vzoru vo všetkých súboroch v aktuálnom priečinku a pod ním postačuje nasledujúci príkaz:

rg PATTERN

Pre hrubý test som spustil jednoduchý (a trochu nepresný) test s použitím priečinka obsahujúceho približne 40 000 súborov. Vykonanie príkazu grep trvalo 30 sekúnd, zatiaľ čo príkaz ripgrep trval necelú sekundu. Tieto výsledky sa nepochybne budú líšiť v závislosti od niekoľkých faktorov, ale ripgrep si v mojom každodennom používaní určite viedol lepšie.

Linux-grep-verzus-ripgrep: Skutočný rozdiel medzi grep a ripgrep a ktorý je lepší na vyhľadávanie súborov

radu
Jedným z dôvodov rýchlosti ripgrepu je jeho viacvláknový model, ktorý vykonáva opakované vyhľadávania paralelne. Zaujímavým vedľajším efektom je, že (s najväčšou pravdepodobnosťou) uvidíte výsledky v inom poradí pri každom vykonaní toho istého vyhľadávania. Ak narazíte na problém, použite možnosť `--sort path`.

Výhody programu ripgrep však presahujú rýchlosť; program sa môže pochváliť širokou škálou funkcií. Jednou z najjednoduchších je podpora rôznych jazykovo špecifických možností filtrovania, ako napríklad:

rg --type sh 'todo'

Toto vykoná iteratívne prehľadávanie aktuálneho adresára a prehľadá iba skripty shellu pre vzor „todo“. Nástroj podporuje širokú škálu typov súborov, ktoré si môžete zobraziť pomocou možnosti `-type-list`.

Prečítajte si tiež:  Užitočné Linuxové aplikácie používané mnohými profesionálmi

linux-ripgrep-type-list-2 Skutočný rozdiel medzi grep a ripgrep a ktorý je lepší na vyhľadávanie súborov

radu
Príkaz ripgrep je vo svojej podstate opakujúci sa, ale aj toto správanie sa dá ovládať pomocou možnosti `-max-depth`. Jednoducho spustite príkaz `rg -max-depth 1 PATTERN` a vaše vyhľadávanie bude napodobňovať základné vyhľadávanie grep, obmedzené na súbory vo vašom aktuálnom priečinku.

Podobne ako mnoho moderných programov, aj ripgrep podporuje git, čo znamená, že číta súbory .gitignore a ignoruje samotné súbory .gitignore. Toto sa deje iba v rekurzívnom režime a existuje niekoľko možností konfigurácie, ktoré vám umožňujú túto funkcionalitu upraviť.

Ripgrep má niekoľko ďalších funkcií. Dokáže preskočiť súbory väčšie ako určitá veľkosť (-max-filesize), zobraziť súhrnné informácie (-stats), použiť inteligentné vyhľadávanie podľa veľkosti písmen (na základe veľkosti písmen vo vzore) a vyhľadávať v súboroch gzip.

Aké ďalšie vyhľadávacie nástroje sú k dispozícii v termináli?
Hoci grep je predvolený vyhľadávací nástroj a ripgrep je najobľúbenejšou alternatívou, existujú aj iné programy, ktoré stoja za vyskúšanie.

nástroj na stiahnutie

Podobný nástroj, väčšinou kompatibilný s grep, je napísaný v jazyku Perl. Štandardne beží rekurzívne, čo uľahčuje jeho používanie. Funguje podobne ako ripgrep, skenuje súbory, ktoré rozpoznáva podľa typu, a ignoruje ostatné. Toto však vylučuje súbory, ktoré zodpovedajú súborom .gitignore, hoci ack bude ignorovať všetky priečinky .git.

Nástroj ack má jedinečnú možnosť -f, ktorá vypíše cesty ku všetkým súborom, ktoré hľadáte, bez toho, aby ich skutočne vyhľadávala. Toto sa nemusí zdať veľmi užitočné, ale môžete využiť ďalšie funkcie nástroja ack a použiť ho na vypísanie zoznamu všetkých súborov (napríklad „nájsť.“) alebo všetkých súborov určitého typu. Táto možnosť bude fungovať v spojení s .gitignore, takže je to užitočný spôsob, ako nájsť súbory v úložisku zdrojového kódu.

Z mojej skúsenosti je ack rýchlejší ako grep, ale nie taký rýchly ako ripgrep.

Silver Surfer

Príkaz `ag` spustí program s názvomStrieborný surfer, Preformuluje frázu „Silver Surfer“ a odkazuje na chemický symbol striebra.

ag je vynikajúca alternatíva k ripgrep. Podľa mojich skúseností nie je taký rýchly ako rg, ale je takmer rovnako rýchly. Rozdiel nie je natoľko významný, aby ste si ho všimli, pokiaľ nespúšťate benchmarkové testy alebo nevykonávate veľmi zložité vyhľadávania.

Prečítajte si tiež:  Pomocou týchto 5 zábavných príkazov som prinútil svojich priateľov, aby si mysleli, že som linuxový hacker

Ale ag dokáže robiť veľa rovnakých vecí ako rg: vyhľadáva súbory .gitignore, porovnáva nové riadky, prehľadáva binárne súbory a dokáže vypísať súhrnné štatistiky.

tříbil

Sift je ďalší nástroj na textové vyhľadávanie, tentoraz napísaný v jazyku Go. Štandardne je iteratívny s možnosťou jeho vypnutia. Zatiaľ čo rg zoskupuje výsledky podľa súboru, sift pred každým zhodným výsledkom vypíše celú cestu. Tento prístup obetuje čitateľnosť pre ľudí v prospech čitateľnosti pre stroj, takže môže byť jednoduchšie ho štandardne skriptovať.

Rovnako ako ag, aj sift je rýchly, aj keď nie taký rýchly ako rg. Štandardne prehľadáva čo najviac súborov, vrátane binárnych súborov a súborov uvedených v .gitignore. Môžete však ignorovať obe sady súborov pomocou volieb `-binary-skip` a `-git`.

Sift nemá manuálovú stránku, čo považujem za nevýhodu, hoci poskytuje užitočné informácie pomocou možnosti –help.

Ak stále používate grep, ktorýkoľvek z týchto nástrojov sa bude zdať ako výrazný upgrade. Ripgrep je môj osobný favorit, pretože vyzerá neuveriteľne elegantne a jeho rozsiahly zoznam funkcií umožňuje rôzne typy výkonného vyhľadávania. Jeho vynikajúca rýchlosť v porovnaní s grep je skutočne pozoruhodná.

Vždy je dobré mať alternatívy: zdravé prostredie s otvoreným zdrojovým kódom by malo v ideálnom prípade viesť k lepšiemu softvéru celkovo. Pre každodenné použitie je však medzi týmito nástrojmi malý rozdiel, okrem programovacích jazykov, v ktorých sa používajú. RepGrip je (sotva) najrýchlejšia a pravdepodobne najlepšia voľba, pokiaľ nepotrebujete veľmi špecifické možnosti.

Dobrou správou je, že RepGrip je stále vo fáze aktívneho vývoja, pričom verzia 15.0.0 bola nedávno vydaná v októbri. ack je stále vo vývoji, ale o niečo pomalším tempom, zatiaľ čo aktualizácie pre sift a ag prakticky prestali vychádzať.

Každý z troch vyhľadávacích nástrojov má svoje vlastné jedinečné vlastnosti: grep Zostáva to bezpečná a spoľahlivá možnosť. ripgrep Ponúka úžasný výkon a vysokú rýchlosť vďaka moderným indexovacím technológiám, ale Silver Searcher Vyvažuje rýchlosť a jednoduchosť.
Výber najlepšej možnosti závisí od povahy vašej práce – ak potrebujete rýchly prieskum veľkých projektov, potom je ripgrep ideálnou voľbou, ale ak uprednostňujete klasickú spoľahlivosť, grep je stále postačujúci.
Dôležité je vedieť, že jednoduchá výmena nástroja vám môže každý deň ušetriť drahocenný čas.

Prejsť na horné tlačidlo