Zoeken op website

6 beste CLI-hulpmiddelen om gegevens in platte tekst te doorzoeken met behulp van reguliere expressies


Deze handleiding geeft een rondleiding langs enkele van de beste opdrachtregelprogramma's die worden gebruikt voor het zoeken naar overeenkomende tekenreeksen of patronen in tekstbestanden. Deze tools worden meestal gebruikt naast reguliere expressies – afgekort als REGEX – wat unieke tekenreeksen zijn om een zoekpatroon te beschrijven.

Zonder veel verder oponthoud, laten we erin duiken.

1. Grep-commando

Op de eerste plaats komt het grep-hulpprogramma – is een acroniem voor Global Regular Expression Print, is een krachtig opdrachtregelprogramma dat van pas komt bij het zoeken naar een specifieke tekenreeks of patroon in een bestand .

Grep wordt standaard meegeleverd met moderne Linux-distributies en geeft je de flexibiliteit om verschillende zoekresultaten te retourneren. Met grep kunt u een breed scala aan functies uitvoeren, zoals:

  • Zoek naar tekenreeksen of overeenkomende patronen in een bestand.
  • Zoek naar tekenreeksen of overeenkomende patronen in Gzip-bestanden.
  • Tel het aantal stringmatches.
  • Druk de regelnummers af die de string of het patroon bevatten.
  • Zoek recursief naar de tekenreeks in mappen.
  • Voer een omgekeerde zoekopdracht uit (d.w.z. resultaten weergeven van tekenreeksen die niet aan de zoekcriteria voldoen).
  • Negeer hoofdlettergevoeligheid bij het zoeken naar tekenreeksen.

De syntaxis voor het gebruik van de opdracht grep is vrij eenvoudig:

grep pattern FILE

Om bijvoorbeeld te zoeken naar de tekenreeks ‘Linux’ in een bestand, bijvoorbeeld hello.txt, terwijl de hoofdlettergevoeligheid wordt genegeerd, voert u de opdracht uit:

grep -i Linux hello.txt

Om meer opties te krijgen die je kunt gebruiken met grep, lees je eenvoudigweg ons artikel met voorbeelden van meer geavanceerde voorbeelden van grep-opdrachten.

2. sed-opdracht

Sed – een afkorting van Stream Editor – is een ander handig opdrachtregelprogramma voor het manipuleren van tekst in een tekstbestand. Sed zoekt, filtert en vervangt tekenreeksen in een bepaald bestand op een niet-interactieve manier.

Standaard drukt de opdracht sed de uitvoer af naar STDOUT (Standard Out), wat impliceert dat het resultaat van de uitvoering op de terminal wordt afgedrukt in plaats van wordt opgeslagen in een bestand.

Het Sed-commando wordt als volgt aangeroepen:

sed -OPTIONS command [ file to be edited ]

Als u bijvoorbeeld alle instanties van ‘Unix‘ wilt vervangen door ‘Linux‘, voert u het commando uit:

sed 's/Unix/Linux' hello.txt

Als u de uitvoer wilt omleiden in plaats van deze op de terminal af te drukken, gebruikt u het omleidingsteken ( > ) zoals weergegeven.

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

De uitvoer van de opdracht wordt opgeslagen in het bestand output.txt in plaats van op het scherm te worden afgedrukt.

Om meer opties te bekijken die gebruikt kunnen worden, bekijk nogmaals de manpagina's.

man sed

3. Bevestig de opdracht

Ack is een snel en draagbaar opdrachtregelprogramma geschreven in Perl. Ack wordt beschouwd als een vriendelijke vervanging voor het grep-hulpprogramma en levert resultaten op een visueel aantrekkelijke manier op.

De opdracht Ack zoekt in het bestand of de map naar de regels die overeenkomen met de zoekcriteria. Vervolgens wordt de overeenkomende tekenreeks in de regels gemarkeerd.
Ack heeft het vermogen om bestanden te onderscheiden op basis van hun bestandsextensies, en tot op zekere hoogte, de inhoud van de bestanden.

Syntaxis van de opdracht Ack:

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

Als u bijvoorbeeld wilt controleren op de zoekterm Linux, voert u het volgende uit:

ack Linux hello.txt

De zoekfunctie is behoorlijk intelligent en als de gebruiker geen bestand of map heeft opgegeven, doorzoekt hij de huidige map en submappen op zoek naar het zoekpatroon.

In het onderstaande voorbeeld is er geen bestand of map opgegeven, maar ack heeft het beschikbare bestand automatisch gedetecteerd en gezocht naar het opgegeven overeenkomende patroon.

ack Linux

Om ack op uw systeem te installeren, voert u de opdracht uit:

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

4. Awk-opdracht

Awk is een volwaardige scripttaal en ook een hulpmiddel voor tekstverwerking en gegevensmanipulatie. Er wordt gezocht naar bestanden of programma's die het zoekpatroon bevatten. Wanneer de string of het patroon wordt gevonden, onderneemt awk actie op de overeenkomst of lijn en drukt de resultaten af op STDOUT.

Het AWK-patroon staat tussen accolades, terwijl het hele programma tussen enkele aanhalingstekens staat.

Laten we het eenvoudigste voorbeeld nemen. Laten we aannemen dat u de datum van uw systeem afdrukt zoals weergegeven:

date

Stel dat u alleen de eerste waarde wilt afdrukken, namelijk de dag van de week. In dat geval pipet u de uitvoer naar awk, zoals weergegeven:

date | awk '{print $1}'

Om opeenvolgende waarden weer te geven, scheidt u ze met een komma, zoals weergegeven:

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

De bovenstaande opdracht geeft de dag van de week en de datum van de maand weer.

Om meer opties te krijgen die u kunt gebruiken met awk, leest u eenvoudigweg onze awk-opdrachtenreeks.

5. Zilverzoeker

De Silver Searcher is een platformonafhankelijke en opensource-zoekmachine voor code, vergelijkbaar met ack, maar met de nadruk op snelheid. Het maakt het gemakkelijk voor u om in de kortst mogelijke tijd naar een specifieke string in bestanden te zoeken:

Syntaxis:

ag OPTIONS search_pattern /path/to/file

Om bijvoorbeeld te zoeken naar de string ‘Linux‘ in een bestand hello.txt roep je de opdracht aan:

ag Linux hello.txt

Bezoek de manpagina's voor extra opties:

man ag

6. Scheurgrep

Ten slotte hebben we het opdrachtregelprogramma ripgrep. Ripgrep is een platformonafhankelijk hulpprogramma voor het zoeken naar regex-patronen. Het is veel sneller dan alle eerder genoemde zoekhulpmiddelen en doorzoekt recursief mappen op overeenkomende patronen. In termen van snelheid en prestaties onderscheidt geen enkele andere tool zich dan Ripgrep.

Standaard zal ripgrep binaire bestanden/verborgen bestanden en mappen overslaan. Houd er ook rekening mee dat het standaard niet zal zoeken naar bestanden die worden genegeerd door .gitignore/.ignore/.rgignore bestanden.

Met Ripgrep kunt u ook naar specifieke bestandstypen zoeken. Als u bijvoorbeeld uw zoekopdracht wilt beperken tot Javascript-bestanden, voert u het volgende uit:

rg -Tsj

De syntaxis voor het gebruik van ripgrep is vrij eenvoudig:

rg [OPTIONS] PATTERN [PATH...]

Bijvoorbeeld. Om te zoeken naar exemplaren van de string ‘Linux’ in bestanden die zich in de huidige map bevinden, voert u de opdracht uit:

rg Linux

Om ripgrep op uw systeem te installeren, voert u de volgende opdrachten uit:

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]

Bezoek de manpagina's voor extra opties:

man rg

Dit zijn enkele van de meest gebruikte opdrachtregelhulpmiddelen voor het zoeken, filteren en manipuleren van tekst in Linux. Als u andere tools heeft waarvan u denkt dat we deze hebben weggelaten, laat het ons dan weten in het commentaargedeelte.