6 beste CLI-verktøy for å søke i vanlig tekstdata ved hjelp av regulære uttrykk


Denne guiden tar en omvisning i noen av de beste kommandolinjeverktøyene som brukes til å søke etter samsvarende strenger eller mønstre i tekstfiler. Disse verktøyene brukes vanligvis sammen med regulære uttrykk – forkortet som REGEX – som er unike strenger for å beskrive et søkemønster.

Uten mye mer, la oss dykke inn.

1. Grep-kommando

I første omgang kommer grep-verktøyet – er et akronym for Global Regular Expression Print, er et kraftig kommandolinjeverktøy som kommer godt med når du søker etter en bestemt streng eller et mønster i en fil .

Grep leveres med moderne Linux-distribusjoner som standard og gir deg fleksibiliteten til å returnere ulike søkeresultater. Med grep kan du utføre en lang rekke funksjoner som:

  • Søk etter strenger eller samsvarende mønstre i en fil.
  • Søk etter strenger eller samsvarende mønstre i Gzipped-filer.
  • Tell antall strengtreff.
  • Skriv ut linjenumrene som inneholder strengen eller mønsteret.
  • Søk rekursivt etter strengen i kataloger.
  • Utfør et omvendt søk (dvs. vis resultater av strenger som ikke samsvarer med søkekriteriene).
  • Ignorer sensitivitet for store og små bokstaver når du søker etter strenger.

Syntaksen for å bruke grep-kommandoen er ganske enkel:

grep pattern FILE

For for eksempel å søke etter strengen «Linux» i en fil, si hello.txt mens du ignorerer store og små bokstaver, kjør kommandoen:

grep -i Linux hello.txt

For å få flere alternativer som du kan bruke med grep, les ganske enkelt artikkelen vår som viser eksempler på mer avanserte grep-kommandoer.

2. sed Kommando

Sed – forkortelse for Stream Editor – er et annet nyttig kommandolinjeverktøy for å manipulere tekst i en tekstfil. Sed søker, filtrerer og erstatter strenger i en gitt fil på en ikke-interaktiv måte.

Som standard skriver kommandoen sed ut utdataene til STDOUT (Standard Out), noe som antyder at resultatet av utførelsen skrives ut på terminalen i stedet for blir lagret i en fil.

Sed-kommandoen påkalles som følger:

sed -OPTIONS command [ file to be edited ]

For å erstatte alle forekomster av «Unix» med «Linux», kaller du for eksempel kommandoen:

sed 's/Unix/Linux' hello.txt

Hvis du vil omdirigere utdata i stedet for å skrive det ut på terminalen, bruk omdirigeringstegnet ( > ) som vist.

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

Utdataene fra kommandoen lagres i output.txt-filen i stedet for å skrives ut på skjermen.

For å sjekke ut flere alternativer som kan brukes, sjekk ut man-sidene igjen.

man sed

3. Bekreft kommando

Ack er et raskt og bærbart kommandolinjeverktøy skrevet i Perl. Ack regnes som en vennlig erstatning for grep-verktøyet og utdataene gir en visuelt tiltalende måte.

Ack-kommandoen søker i filen eller katalogen etter linjene som inneholder samsvar for søkekriteriene. Den fremhever deretter den samsvarende strengen i linjene.
Ack har kapasitet til å skille filer basert på filtypene deres, og til en viss grad innholdet i filene.

Ack kommando syntaks:

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

For å se etter søkeordet Linux, kjør for eksempel:

ack Linux hello.txt

Søkeverktøyet er ganske intelligent, og hvis ingen fil eller katalog er levert av brukeren, søker den i gjeldende katalog og underkataloger etter søkemønsteret.

I eksemplet nedenfor er ingen fil eller katalog oppgitt, men ack har automatisk oppdaget den tilgjengelige filen og søkt etter det samsvarende mønsteret.

ack Linux

For å installere ack på systemet ditt, kjør kommandoen:

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

4. Awk-kommando

Awk er et fullverdig skriptspråk og også et tekstbehandlings- og datamanipuleringsverktøy. Den søker etter filer eller programmer som inneholder søkemønsteret. Når strengen eller mønsteret er funnet, tar awk handling på kampen eller linjen og skriver ut resultatene på STDOUT.

AWK-mønsteret er omsluttet mellom krøllete klammeparenteser mens hele programmet er omsluttet av enkle anførselstegn.

La oss ta det enkleste eksempelet. La oss anta at du skriver ut datoen for systemet ditt som vist:

date

Anta at du bare vil skrive ut den første verdien, som er ukedagen. I så fall, rør utgangen inn i awk som vist:

date | awk '{print $1}'

For å vise etterfølgende verdier, skille dem med komma som vist:

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

Kommandoen ovenfor viser ukedagen og månedsdatoen.

For å få flere alternativer som du kan bruke med awk, les ganske enkelt awk-kommandoserien vår.

5. Sølvsøker

Sølvsøkeren er et søkeverktøy på tvers av plattformer og åpen kildekode som ligner ack, men med vekt på hastighet. Det gjør det enkelt for deg å søke etter en bestemt streng i filer på kortest mulig tid:

Syntaks:

ag OPTIONS search_pattern /path/to/file

For å for eksempel søke etter strengen «Linux» i en fil hello.txt, start kommandoen:

ag Linux hello.txt

For flere alternativer, besøk man-sidene:

man ag

6. Ripgrep

Til slutt har vi kommandolinjeverktøyet ripgrep. Ripgrep er et tverrplattformverktøy for å søke etter regex-mønstre. Det er mye raskere enn alle de tidligere nevnte søkeverktøyene og søker rekursivt i kataloger etter samsvarende mønstre. Når det gjelder hastighet og ytelse, er det ingen andre verktøy som skiller seg ut som Ripgrep.

Som standard vil ripgrep hoppe over binære filer/skjulte filer og kataloger. Vær også oppmerksom på at den som standard ikke vil søke etter filer som ignoreres av .gitignore/.ignore/.rgignore-filer.

Ripgrep lar deg også søke etter bestemte filtyper. For å begrense søket ditt til å kjøre Javascript-filer:

rg -Tsj

Syntaksen for å bruke ripgrep er ganske enkel:

rg [OPTIONS] PATTERN [PATH...]

For eksempel. For å søke etter forekomster av strengen 'Linux' i filer som ligger inne i gjeldende katalog, kjør kommandoen:

rg Linux

For å installere ripgrep på systemet ditt, kjør følgende kommandoer:

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]

For flere alternativer, besøk man-sidene:

man rg

Dette er noen av de mest brukte kommandolinjeverktøyene for å søke, filtrere og manipulere tekst i Linux. Hvis du har andre verktøy du føler vi har utelatt, gi oss beskjed i kommentarfeltet.