Vad är GREP i Linux och hur använder man det?
Grep är ett kraftfullt UNIX-verktyg för att söka efter textmönster i filer. Denna artikel täcker grunderna och de vanligaste användningsområdena för grep.
Grep är ett litet UNIX-program för att hitta matchande mönster. Först släppt i V6 UNIX, kan du nu hitta det på nästan alla UNIX-liknande system som Linux, macOS, och till och med BSD:er. I denna artikel kommer jag att gå igenom grunderna i Grep och visa dig några exempel på hur man använder programmet för dagliga uppgifter.
Grunderna i att använda Grep
I grunden är Grep ett enkelt och rakt program. Det tar in en input, hittar den text som du vill ha i den inputen, och skriver ut matchningar som output. Grep kan bearbeta nästan vilken typ av ren textkälla som helst. Detta gör att det kan läsa input från andra kommandon och söka direkt genom filer.
Det enklaste sättet att komma igång med Grep är att läsa data från en textfil. Till exempel skriver följande kommando ut innehållet i min sample.txt-fil:
grep '' sample.txt
Vidare kan du använda denna funktion för att söka och hitta specifika textstycken inuti dina textfiler:
grep 'word' sample.txt
Du kan också använda Grep med UNIX-pipes, vilket gör att du kan sammanfoga flera program i ett enda kommando:
cat sample.txt | grep ''
Bra att veta: Känner du för att utöka dina UNIX-kunskaper? Lär dig hur skärmblädderverktyg fungerar i Linux genom att kolla in vår fuskark för GNU less.
Hitta filer i en katalog
En av de enklaste uppgifterna du kan göra med Grep är att hitta filer i en kataloglista. För att göra detta kan du skicka outputen från ls
-kommandot genom en UNIX-pipe direkt till Grep.
Följande kommando skriver ut och markerar alla filer i din nedladdningsmapp med .jpg filändelse:
ls ~/Downloads | grep \\.jpg
Du kan också skicka en mer detaljerad ls
-output till Grep och använda den för mönsterigenkänning. Till exempel listar följande kommando alla filer i katalogen med mindre än 1 MB filstorlek:
ls -lh ./ | grep .K
Glöm skrivfallet
Som standard är nästan alla program i ett UNIX-liknande system skiftlägeskänsliga. Detta betyder att systemet behandlar strängen “Hello” annorlunda än “hello,” “hEllo,” och “helLo.”
Detta beteende kan vara besvärligt när man söker efter strängar inuti filer. Till exempel kan en uppsats ha både “Hello” och “hello” samtidigt. För att åtgärda detta, kör Grep med -i
flaggan följt av den sträng som du vill hitta.
grep -i Hello hello.txt
Rekursiva sökningar
Grep kan söka genom mer än en fil eller katalog på en gång. Detta är användbart om du arbetar med ett projekt som har flera filer och du vill veta var en sträng av text förekommer i en katalog. Till exempel matchar följande kommando ordet “MakeTechEasier” inne i “sample”-katalogen:
grep -r 'MakeTechEasier' ./sample
Detta sagt, att använda -r
-flaggan kommer också att få Grep att se igenom varje fil i din mål katalog. Detta kan vara ett problem om du även har icke-textfiler inuti den mapp som du söker i. För att förhindra detta, kör Grep med -I
flaggan:
grep -rI 'MakeTechEasier' ./sample
För övrigt: Lär dig hur du kan skapa filer i terminalen med kommandot touch.
Matcha filer som innehåller sträng
Förutom att visa var en specifik sträng förekommer i olika filer kan du också använda Grep för att skapa en lista över filer som innehåller din måltext. Detta är användbart om du vill veta om en fil innehåller en viss sträng men inte vill att Grep ska skriva ut varje instans av den i terminalen.
För att göra detta, kör Grep med -r
och -l
flaggorna följt av den sträng som du vill matcha och den katalog som du vill titta på:
grep -rl MakeTechEasier ./sample
Du kan till och med omge ditt Grep-kommando inuti en Bash-subshell för att skapa flera villkor för din textmatchning. Till exempel kommer följande kodrad endast att returnera filer som innehåller både “Hello” och “MakeTechEasier” i “sample” mappen:
grep -rl MakeTechEasier $(grep -rl Hello ./sample)
Hitta motsatsen
Förutom att utföra direkta sökningar kan Grep också returnera resultat som inte matchar dina inledande kriterier. Även om det kan verka kontraintuitivt till en början, kan detta vara användbart i fall där du behöver lyfta fram fel och avvikelser i din textinput.
För att göra detta, kör Grep med -v
tillsammans med de andra flaggorna som du vill använda.
vill aktivera. Till exempel, följande kommando kommer att söka igenom varje fil i min “/etc/nginx” mapp och returnera alla rader som inte innehåller strängen “nginx”:
grep -rv 'nginx' /etc/nginx
Ord och Rader
Det kan också vara användbart att be Grep att söka efter hela ord eller rader, istället för vad som helst som innehåller ett visst mönster. Detta är användbart om du matchar en sträng av tecken som är vanlig i många ord. Till exempel, att matcha ordet “it” kommer att ge många falska positiva resultat eftersom “it” är en vanlig sträng som kan förekomma i ord.
För att åtgärda detta kan du köra Grep med flaggan -w
följt av ordet som du vill matcha:
cat it.txt | grep -w it
Istället för att skriva ut varje ord som innehåller mönstret, kommer Grep endast att skriva ut ordet i sig. Det gör samma sak för hela rader med flaggan -x
, så om du letar efter en fras eller en enda rad i en konfigurationsfil kan det verkligen hjälpa.
Lägg till Radnummer i Grep Utdat
Radnummer är en viktig del av felsökning av program och korrekturläsning av text. Det gör att du noggrant kan referera till platsen för en specifik funktion eller mening, vilket gör det mycket snabbare att fixa och ändra.
I det avseendet kommer Grep med möjlighet att skriva ut radnummer i sin standardutdata. För att göra detta, kör programmet med flaggan -n
följt av strängen som du vill matcha:
grep -n main ./my-code.c
Med hjälp av UNIX-pipor kan du också modifiera Greps utdata och endast skriva ut radnummer för det du letar efter. Detta gör det mycket renare och lättare att tolka stora texter:
grep -n Sed essay.txt | cut -f 1 -d :
FYI: UNIX-pipor är mer än bara ett verktyg för Grep. Lär dig att automatisera dina fjärrshelluppgifter genom att skapa och använda SSH-pipor.
Använda Utökad Regex med Grep
Grep använder den Grundläggande Reguljära Uttryck (BRE) metakaraktärssetet för att matcha och filtrera textsträngar. Även om detta vanligtvis fungerar för de flesta uppgifter, kan vissa användare tycka att det är begränsande, särskilt när de arbetar med mönstergrupper.
För att åtgärda detta tillhandahåller de flesta Grep-implementationer flaggan -E
, vilket gör att programmet kan analysera Utökade Reguljära Uttryckt (ERE) metakaraktärer. Till exempel kommer följande kommando endast att fungera med flaggan -E
:
printf "hello\nhellooooo\n" | grep -E .*o{2}$
Notera: den GNU-version av Grep använder vissa ERE-funktioner som standard. Det är dock god praxis att använda -E
när du använder ERE för att bevara kompatibilitet med andra UNIX-liknande system.
Vidare har Grep också ett specialläge som tar bort alla Regex-funktioner helt och hållet. För att använda detta, kör programmet med flaggan -F
följt av din rena sträng:
grep -F [MakeTechEasier] ./fixed.txt
Lägga till Intilliggande Rader i Grep Utdat
En av Greps kärnstyrkor är att visa var texten förekommer i din fil eller ingångsström. Det finns dock tillfällen då det bara är att veta exakt var en sträng förekommer inte hjälper när man felsöker problem. Till exempel ger en kraschlogg vanligtvis ytterligare sammanhang innan den skriver ut det traditionella “Segmentation Fault”-meddelandet.
Ett sätt att lösa detta problem är att köra Grep med flaggan -C
följt av mängden rader som du vill skriva ut runt din målttext. Följande kommando skriver ut fem rader före och efter din textmatch:
grep -C 5 'Hello' ./hello-sample.txt
Du kan också anpassa om Grep endast ska skriva ut för-matchade eller efter-matchade kontexter med flaggorna -B
och -A
. Till exempel kommer följande att skriva ut de tidigare tio raderna efter din målsträng:
grep -A 10 'Hello' ./hello-sample.txt
Med grunderna i Grep och hur man använder det för dina dagliga uppgifter inlärda kan du nu ta ditt första steg i att förstå kommandoraden och kärn UNIX-verktyg. Utforska mer av denna mycket mångsidiga och djupa värld genom att lära dig hur sed fungerar i Linux.
Usein kysytyt kysymykset
Hur fungerar grep i Linux?
Grep on tehokas komentorivityökalu Linux
- - ja Unix-järjestelmissä, jota käytetään tekstinhakuun määriteltyjen sanojen tai merkkijonojen perusteella. Seuraavat kohdat kuvaavat grep-toimintaa:
- Määritelmä: grep tarkoittaa 'Globalt sök efter ett reguljärt uttryck och skriv ut det'.
- Peruskäyttö: Komentoa käytetään syöttämällä sen jälkeen hakusana ja tiedostonimi, esimerkiksi
grep 'hakusana' tiedosto.txt
. - Regulääriset lausekkeet: Grep tukee reguläärisiä lausekkeita, mikä mahdollistaa monimutkaisempien hakujen suorittamisen.
- Suodatustoiminnot: Voit käyttää optionaalisia lippuja, kuten
-i
(eivät huomioi kirjainkokoa) tai-r
(rekursiivinen haku kansioissa). - Tulostus: Grep tulostaa kaikki rivit, jotka sisältävät haetut merkkijonot, mikä helpottaa datan analysointia. Yhteenvetona: grep on vankka työkalu, joka nopeuttaa tiedonhakua ja parantaa työnkulkua komentorivillä.
Hur ser en grep ut?
En grep har typiskt följande egenskaper:
- - Form: Liknar en gaffel, med flera klor eller taggar.
- Material: Finns i hårdplast eller metall.
- Användningsområden: Olika modeller anpassade för specifika behov, exempelvis grävning, jordbearbetning eller komposthantering. Hos Granngården erbjuder vi ett brett utbud av grepar för alla typer av trädgårdsarbete.
Hur hittar man en fil i Linux med grep?
För att hitta en fil i Linux med grep, gör följande:
Hur hittar man ett ord i en fil i Linux?
För att hitta ett ord i en fil i Linux kan du använda kommandot grep
. Här är en snabb guide:
ditt_ord
med det ord du letar efter och filnamn
med namnet på filen.grep
är effektivt för att söka igenom filer och kan filtrera utdata från andra kommandon.Nyt kun olet lukenut Vad är GREP i Linux och hur använder man det? loppuun, kutsumme sinut tutustumaan lisää Linux-kategoriaan. Löydät sieltä muita mielenkiintoisia artikkeleita, jotka laajentavat tietojasi ja pitävät sinut ajan tasalla. Älä lopeta lukemista ja löytämistä!
Vastaa