Som navnet på grep antyder, beskrives mønsteret til at søge efter ved hjælp af et regulært udtryk. Regulært udtryk er en speciel type streng, der beskriver et mønster, der skal matche, lokalisere og administrere. Hvis du vil lære mere om grep og regulært udtryk, skal du tjekke ud ved hjælp af grep og egrep med regulært udtryk.
Tag et eksempler på en tekstfil til demonstrationsformål. I dette eksempel skal du downloade GNU General Public License v3.0 tekstfil.
Grundlæggende søgning
Den grundlæggende måde at bruge grep på er at søge efter en grundlæggende streng.
Se på følgende grep-kommando. Det søger efter ordet “GNU” i tekstfilen.
$ grep "GNU" gpl-3.0.txt
Brug “-n” -flaget for at vise linjenummeret.
$ grep -n “GNU” gpl-3.0.txt
For at udføre en sag-ufølsom søgning ved hjælp af grep skal du bruge “-i” flag.
$ grep -ni “gnu” gpl-3.0.txt
Du vil muligvis ikke se søgematchene, men kun filnavnet, hvor matchet skete i nogle situationer. For kun at udskrive filnavnet skal du bruge “-l” flag. Her angiver stjernen at bruge alle tekstfiler i det aktuelle bibliotek.
$ grep -l “gnu” *
Vi kan også føre output fra andre kommandoer til grep.
$ kat gpl-3.0.txt | grep -n “GNU”
Almindelig udtryk
Regex tilbyder en smart måde at finjustere søgningen på. Det har sine egne regler. Imidlertid implementerer forskellige applikationer og programmeringssprog forskelligt regulært udtryk. Her er et par eksempler, som du kan bruge med grep.
For at definere, at strengen skal findes ved start af en linje, skal du bruge symbolet caret (^).
$ grep -n “^ GNU” gpl-3.0.txt
For at definere, at strengen skal findes i slutningen af en linje, skal du bruge dollartegnet ($).
$ grep -n “til $” gpl-3.0.txt
For at beskrive, at der kan være et hvilket som helst tegn på et bestemt sted i mønsteret, skal du bruge punkttegnet (.). Eksempelvis udtrykket “G.U ”er gyldig, hvis der er tegn mellem“ G ”og“ U ”.
$ grep -n “G.U ”gpl-3.0.txt
For at beskrive, at der kan være et undersæt af tegn på et bestemt sted i mønsteret, skal du bruge parenteserne ([]). Eksempelvis fortæller udtrykket “t [wo] o”, at matchet kun gælder for “to” og “også”.
$ grep -n “t [wo] o” gpl-3.0.txt
Udvidet regulært udtryk
Som navnet antyder, kan et udvidet regulært udtryk gøre mere komplekse ting end grundlæggende regulære udtryk. For at bruge udvidet regulært udtryk med grep skal du bruge “-E” -flagget.
$ grep -nE For at søge efter to forskellige strenge skal du bruge OR-operatorerne (|).
$ grep -nE “GNU | Generelt | Licens” gpl-3.0.txt
Finde tekst i filer
Nu kommer hoveddelen. I stedet for manuelt at fortælle grep-filen, som søgningen skal udføres på, kan grep gøre det automatisk. I den følgende kommando bruger grep alle de tilgængelige tekstfiler i den aktuelle mappe til at søge i mønsteret.
$ grep * Hvis du vil grep for at udføre søgningen i en anden mappe, skal du angive placeringen.
$ grep
Hvis der er mapper, udforsker grep dem ikke som standard. For at bede grep om at søge rekursivt, skal du bruge “-R” -flagget.
$ grep -nR
Grep GUI
Hvis du foretrækker at arbejde med GUI, men stadig vil nyde greps funktioner, så tjek searchmonkey. Det er en front-end-løsning til grep. Pakken er tilgængelig på næsten alle de større Linux-distroer.
Find tekst i filer ved hjælp af nano
GNU Nano er en enkel og kraftfuld teksteditor, der leveres med enhver Linux-distro. Det har indbyggede funktioner til at søge efter tekst i en tekstfil.
Bemærk, at i denne metode skal du åbne tekstfilen og søge manuelt. Det er muligt, hvis der kun er en håndfuld tekstfiler at arbejde med. Hvis der er mere, er det mest optimale valg at bruge grep.
Åbn tekstfilen i nano.
$ nano
For at søge efter en strengkamp skal du trykke på "Ctrl + W". Efter at have skrevet den streng, du vil søge efter, skal du trykke på "Enter".
Find tekst i filer ved hjælp af Vim
Vim er en velkendt og anset teksteditor. Det er kommandolinjekvivalenten for en moderne teksteditor. Vim leveres med adskillige avancerede funktioner som plugins, makroer, automatisk udfyldning, filtre osv.
Svarende til nano arbejder Vim med en enkelt fil ad gangen. Hvis du har flere tekstfiler, er brugen af grep den mest optimale vej at gå.
For at søge i en tekstfil skal du først åbne den i Vim.
$ vim
Indtast følgende Vim-kommando, og tryk på "Enter".
$: /
Find tekst i filer ved hjælp af GNOME Text Editor
GNOME Text Editor er den teksteditor, der følger med GNOME-skrivebordet. Det er en forenklet teksteditor med alle de grundlæggende funktioner, du forventer. Det er et godt alternativ til kommandolinjeditorerne.
I lighed med nano og vim gælder den samme forsigtighed for denne metode. Hvis antallet af tekstfiler er stort, skal du hellere holde dig til grep.
Åbn tekstfilen i Text Editor. Tryk på "Ctrl + F" for at åbne søgefeltet.
Find tekst i filer ved hjælp af VS-kode
Visual Studio Code er en kraftfuld teksteditor med masser af funktioner. Det er optimeret til, at programmører kan bruges som om det er en fuldgyldig IDE. Den er tilgængelig på næsten alle de større Linux-distroer.
Installer snap Studio-pakken til Visual Studio.
$ sudo snap installationskode --classic
Åbn tekstfilen i VS-kode. Tryk på "Ctrl + F" for at starte søgningen.
Afsluttende tanker
Der er adskillige måder at søge tekst i filer på. Det er en nem opgave at mestre. Det anbefales kraftigt at mestre grep-kommandoen, fordi den giver mest værdi med hensyn til effektivitet og brugervenlighed.
Hvis du foretrækker GUI, er der mange teksteditorer at vælge imellem. Enhver moderne teksteditor giver tekstsøgemuligheden.
Glad computing!