Avancerad grep med Regex
Använd komplexa regex-mönster med 'grep' för att utföra mycket specifika och effektiva textsökningar i filer.
Avancerad grep med Regex är en gratis lektion i Bemästra Linux-kommandoraden och Bash-skriptning på CoddyKit. Detta är lektion 2 av 4. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för Bemästra Linux-kommandoraden och Bash-skriptning, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Bemästra Linux-kommandoraden och Bash-skriptning innehåller totalt 4 lektioner.
Greps superkrafter med reguljära uttryck
Välkommen till avancerad användning av Grep med reguljära uttryck! I föregående lektion lärde vi oss om reguljära uttryck. Nu ska vi utnyttja deras fulla potential i det kraftfulla kommandot grep.
grep är det självklara verktyget för att söka efter textmönster i filer. Genom att kombinera det med avancerade reguljära uttryck kan du hitta exakt det du söker, oavsett hur komplext mönstret är.
Aktivera utökade reguljära uttryck (-E)
Som standard använder grep grundläggande reguljära uttryck (BRE). Om du vill använda mer avancerade funktioner som +, ?, | och () måste du aktivera utökade reguljära uttryck (ERE).
Det gör du med alternativet -E eller genom att använda kommandot egrep, som i princip är samma sak som grep -E. Skapa en exempelfil att arbeta med:
echo "apple
banana
appanana
orange
app" > fruits.txtKvantifierare: en eller flera (+)
Kvantifieraren + matchar en eller flera förekomster av det föregående tecknet eller den föregående gruppen. Den är mycket användbar när du förväntar dig att ett mönster ska upprepas minst en gång.
Om du till exempel vill hitta rader med "p" följt av ett eller flera "a" använder du pa+.
grep -E 'pa+' fruits.txtKvantifierare: noll eller flera (*)
Kvantifieraren * matchar noll eller flera förekomster av det föregående tecknet eller den föregående gruppen. Den är användbar när ett tecken kan förekomma, men inte är obligatoriskt.
Nu ska vi hitta rader med "b" följt av noll eller flera "a":
grep -E 'ba*' fruits.txtKvantifierare: noll eller ett (?)
Kvantifieraren ? matchar noll eller en förekomst av det föregående tecknet eller den föregående gruppen. Tänk på den som ett sätt att göra ett tecken valfritt.
Vill du hitta både "color" och "colour"? Du kan göra "u" valfritt:
echo "color
colour
coor" > words.txt
grep -E 'colou?r' words.txtExakta antal med {} (klammerparenteser)
För ännu större kontroll kan du ange exakta antal eller intervall med klammerparenteser {}:
a{3}: exakt tre "a".a{2,}: två eller flera "a".a{1,3}: mellan ett och tre "a".
Nu ska vi hitta rader där "a" upprepas exakt två gånger:
grep -E 'a{2}' fruits.txtAnkare: början och slut (^, $)
Ankare matchar inte tecken, utan positioner. Ankaret ^ matchar början av en rad och $ matchar slutet av en rad.
Detta är viktigt för att säkerställa att mönstret matchar hela raden eller börjar/slutar exakt där du avser.
^apple: rader som börjar med "apple".banana$: rader som slutar med "banana".^apple$: rader som endast innehåller "apple".
grep -E '^app' fruits.txtAlternativ med OR (|)
Symbolen | (vertikalstrecket) fungerar som operatorn OR. Den låter dig matcha det ena mönstret ELLER det andra. Det är mycket användbart när du vill söka efter flera olika ord eller fraser samtidigt.
Om du till exempel vill hitta rader som innehåller antingen "apple" eller "orange":
grep -E 'apple|orange' fruits.txtGruppera mönster med ()
Parenteser () används för att gruppera delar av ett reguljärt uttryck. Då kan du använda kvantifierare eller alternativ på en hel grupp, inte bara på ett enskilt tecken.
Om du till exempel vill hitta "ana" som förekommer en eller flera gånger efter "b":
grep -E 'b(ana)+' fruits.txtSnabbkontroll: avancerad grep
Följande finns i filen data.txt:
cat
cats
catt
catterpillar
dog
Vilket kommando hittar korrekt rader som innehåller "cat" följt av noll eller flera "t"?
Sammanfattning: Greps kraft med reguljära uttryck
Du behärskar nu avancerade grep-tekniker med hjälp av utökade reguljära uttryck! Vi har gått igenom:
- Att använda
-Eför funktioner i utökade reguljära uttryck. - Kvantifierare:
+(en eller flera),*(noll eller flera),?(noll eller en) och{}för specifika antal. - Ankare:
^(början av raden) och$(slutet av raden). - Alternativet
|för villkor av typen "OR". - Att gruppera mönster med
().
Med dessa verktyg kan du utföra otroligt precisa och flexibla textsökningar och bli en riktig trollkarl på kommandoraden!
Lär dig Bash med en AI-lärare – gratis
Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.
- Kurser
- 22
- Lektioner
- 88
Vanliga frågor
Är lektionen ”Avancerad grep med Regex” gratis?
Ja – hela texten till ”Avancerad grep med Regex” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i Bemästra Linux-kommandoraden och Bash-skriptning, kan Ni uppgradera till CoddyKit PRO. Kursen i Bemästra Linux-kommandoraden och Bash-skriptning innehåller totalt 4 lektioner.
Vad lär jag mig i ”Avancerad grep med Regex”?
Använd komplexa regex-mönster med 'grep' för att utföra mycket specifika och effektiva textsökningar i filer. Ni övar på Bemästra Linux-kommandoraden och Bash-skriptning med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.
Behöver jag någon erfarenhet för att börja lära mig Bemästra Linux-kommandoraden och Bash-skriptning?
Du behöver inga förkunskaper. Utbildningen i Bemästra Linux-kommandoraden och Bash-skriptning på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 2 av 4.
Hur lång tid tar lektionen ”Avancerad grep med Regex”?
De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.
Kan jag skriva och köra kod i den här Bemästra Linux-kommandoraden och Bash-skriptning-lektionen?
Ja. Varje Bemästra Linux-kommandoraden och Bash-skriptning-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.
Alla lektioner i den här kursen
- Introduktion till reguljära uttryck (Regex)
- Avancerad grep med Regex
- Kombinera Regex med sed/awk
- Fångstgrupper, bakreferenser och substitution