Nogle gange skal du muligvis søge i et bestemt ord eller en streng inde i en fil. For at gøre dette har næsten alle teksteditorer nogle GUI-implementeringer, der kan hjælpe dig. Men for Linux-brugere er det meget mere produktivt og praktisk at foretage disse søgninger fra kommandolinjen.
Faktisk har Linux et kraftfuldt og praktisk kommandolinjeprogram - grep-kommandoen til dette formål. Ved hjælp af dette kan du søge efter en bestemt streng ikke kun i en fil, men flere filer for en mere omfattende søgning.
Inden du kan bruge grep-kommandoen, skal du dog først vide, hvordan den fungerer, og dens syntakser. Og så for at hjælpe dig har vi sammensat en detaljeret guide til brug af grep-kommandoen til at hjælpe dig med at finde strenge i en fil på Linux. Ikke kun det, men vi viser dig også, hvordan du søger efter strenge i filer via kommandolinjeditoren og GUI-teksteditoren.
Bemærk: Til denne vejledning har vi oprettet to demo-tekstfiler - demofile.txt og demofile02.txt. Vi bruger grep-kommandoen til at finde strenge i disse filer. Her er et kig på indholdet af begge disse filer, så du ved, hvordan kommandoerne fungerer.
Indhold af demofile.txt:
Dette er en demo-fil, som jeg har oprettet til demonstrationsformål. Dette indeholder en masse ord for at skabe sætninger, der endelig slutter med en periode. Dette er for grep-eksemplet.
Indhold af demofile02.txt:
Dette er en anden demo-fil, som jeg bruger til denne demonstration. Denne ligner den sidste, da den indeholder tre linjer med nogle ord. Denne anden fil hjælper med at give nogle forskellige eksempler.
Find strenge i en fil via kommandolinjen (GREP-metode)
GREP er en forkortelse for Global Regular Expression Print. Det er "globalt", fordi det kan søge i hele dit Linux-system. "Regular Expression" er det, vi kalder det tekstsøgemønster, som vi vil bruge sammen med kommandoen. Og "Udskriv" betyder, at det vil udskrive søgeresultaterne, så snart det finder et match baseret på det angivne regulære udtryk.
Nu hvor du har en idé om, hvad grep-kommandoen er, lad os se, hvordan vi kan bruge den. Her er syntaksen for at bruge kommandoen grep til at finde en streng i en fil:
$ grep snor filnavn
Du bliver nødt til at erstatte udtrykket "streng" med det "almindelige udtryk", du vil bruge, og "filnavnet" med navnet på den fil, hvor du vil søge efter strengen.
# 1. Brug af GREP til at finde en streng i en fil
Så lad os sige, hvis du vil søge efter ordet "demonstration" i filen "demofile".txt, ”skal du bruge denne kommando:
$ grep demonstration demofile.txt
Hvilket giver output:
Som du kan se, henter kommandoen hele linjen, der indeholder den medfølgende streng. Hvis den angivne streng forekommer i flere linjer, udskrives den alle. Lad os se, om det fungerer ved at søge efter strengen "Dette" i "demofilen.txt-fil.
$ grep Denne demofil.txt
Og output er:
Bemærk hvordan du brugte strengen "dette" først, og den udskrev ikke noget. Det er først, når du indtaster "Dette", at du får et match. Som sådan skal du huske, at kommandoen grep er store og små bogstaver.
For at ignorere sagen skal du i stedet indtaste denne kommando:
$ grep -i denne demofil.txt
Som du kan se nu, selvom den medfølgende streng er "dette", matcher kommandoen for "Dette" og udskriver det svar.
# 2. Brug af GREP til at finde den samme streng i flere filer
For at søge gennem flere filer efter den angivne streng, skal du blot tilføje kommandoen med alle filnavne.
Her er et eksempel. Her søger vi efter strengen "ord" i filerne "demofile".txt ”og“ demofile02.txt ”:
$ grep ord demofile.txt demofile02.txt
Og output er:
Som du kan se, vil grep-kommandoen ikke kun vise dig det matchede resultat, men også bekvemt mærke hvilken fil den kommer fra.
# 3. Brug af GREP til at finde flere strenge i flere filer
Du kan også bruge grep til at finde flere strenge i enkelt- eller flere filer. Dette er den syntaks, som du bliver nødt til at bruge:
$ grep -E 'mønster1 | mønster2 | mønster3 |…' filnavn1 filnavn2 filnavn3 ..
Indstillingen -E, som vi indtastede, behandler følgende mønster som et udvidet regulært udtryk, som giver os mulighed for at søge efter flere strenge.
Lad os nu bruge det, vi lærte, til at søge efter strengene "fil" og "ord" i de to filer: "demofile.txt ”og“ demofile02.txt ”:
$ grep -E 'fil | ord' demofil.txt demofile02.txt
Og output er:
# 4. Tips og tricks til brug af GREP-kommandoen til at finde strenge
På trods af sin overordnede enkelhed er grep-kommandoen ekstremt kraftig. Her er et par måder, du kan bruge grep-kommandoen til avancerede strengesøgninger.
For eksempel vidste du, at du kan bruge grep-kommandoen med jokertegn? Lad os overveje denne kommando:
$ grep word demofile *
Hvilket giver output:
Som du kan se, har kommandoen søgt efter og viser nu resultaterne for begge filer “demofile.txt ”og“ demofile02.txt ”. Dette skyldes, at vi brugte det asterisk (*) jokertegn, der bruges til at repræsentere en eller flere forekomster af enhver karakter.
For mere information om de forskellige typer wildcards og hvordan man bruger dem, kan du tjekke denne læsning: Wildcards i Linux forklaret med 10 eksempler.
Når vi går videre, understøtter grep-kommandoen også masser af kommandomuligheder. Vi har allerede set to af dem nu:
- -i: bruges til at ignorere sagen.
- -E: bruges til at behandle følgende streng som et udvidet regulært udtryk.
Der er masser af andre grep-kommandomuligheder som:
- -r: lav en rekursiv søgning.
- -c: tæl det samlede antal gange strengen dukkede op.
- -n: udskriv linjenummeret, hvor strengen opstod.
- -o: udskriv kun den matchende streng og udskriv ikke hele linjen.
Alt, hvad vi hidtil har diskuteret, skal være nok til at hjælpe dig med at søge efter strenge i filer. Men hvis du vil mestre GREP-kommandoen, anbefaler vi, at du tjekker disse to artikler:
- Brug af GREP-kommandoen i Linux med eksempler
- Top 5 anvendelser af GREP-kommando i Linux
Find strenge i en fil via kommandolinjen (Brug af kommandolinjeditorer)
Grep-kommandoen er et kraftfuldt værktøj, der kan hjælpe dig med at udføre avancerede søgninger for at matche strenge med flere filer og mapper på din Linux-pc. Men hvis du allerede har filen åben i en kommandolinjeteksteditor, er der ingen grund til at afslutte fileditoren og bruge kommandoen grep.
Faktisk kommer de fleste kommandolinjeditorer allerede med en indbygget søgefunktionalitet.
Nu er det uden for denne tutorials rækkevidde at dække hver enkelt kommandolinjeteksteditor, og hvordan man finder strenge i en fil, der er åbnet i den teksteditor. Som sådan vil vi se på de to mest populære kommandolinjeditorer, som du er nødt til at bruge:
Sådan finder du en tekststreng i nano?
Lad os sige, at du har filen åbnet i nano-teksteditoren. I så fald er alt hvad du skal gøre, at trykke på Ctrl + W, og du finder en ny prompt til at skrive strengen.
Når du er færdig, skal du trykke på Enter, og markøren lander på det første tegn i den første forekomst af den søgte streng. Du kan fortsætte med at trykke Enter for at springe til de andre strenginstanser, hvis nogen.
Sådan finder du en tekststreng i vim?
Hvis du bruger vim-teksteditoren, kan du skrive: / efterfulgt af den streng, du vil søge efter, og derefter trykke på Enter. På samme måde som før lander markøren ved den første forekomst af den søgte streng. Også her kan du fortsætte med at trykke Enter for at springe til de andre forekomster af strengen.
Find strenge i en fil via kommandolinjen (GUI-metode)
Der er endda en GUI-metode til at finde strenge i en fil. I det væsentlige svarer det til funktionen "find og erstat", du får at se på Microsoft Word; det varierer dog afhængigt af hvilken GUI-teksteditor du bruger.
Nu, som du ved, er der hundredvis af teksteditorer, og det er ikke praktisk at dække dem alle her. Alle fungerer dog på samme måde, så du har ikke noget problem at arbejde med andre, når du først ved, hvordan en af dem fungerer.
Til denne tutorial bruger vi standardteksteditoren, der følger med Ubuntu, kaldet - “Text Editor.”
Som du kan se på billedet, har vi åbnet demofilen.txt på redaktøren. Nu klikker vi på rullemenuen, som afslører muligheder for "Find" og "Find and Replace", som vi kan bruge til at finde strenge i den åbnede fil.
Afslutter
Så det bringer os til slutningen af denne korte vejledning om at finde strenge i en fil på Linux. Vi håber, du finder dette nyttigt, og at det hjalp dig med at blive mere produktiv med, hvordan du søger efter specifikke strenge på dit Linux-system.
Hvis du har spørgsmål, bedes du give os en kommentar, så vi hjælper dig med dine forespørgsler.
Hvis du starter med Linux, skal du ikke glemme at tjekke vores Learn Linux-serie. Den er fyldt med masser af fantastiske tutorials, vejledninger og guider, der er designet til begyndere og mere erfarne brugere, der hjælper dig med at blive en ægte Linux-strømbruger.