Linux Regular Expression Tutorial: Grep Regex Eksempel

⚡ Smart opsummering

Regulære udtryk i Linux er specielle tegnsekvenser, der søger i data og matcher komplekse mønstre på tværs af værktøjer som grep, sed og vi, ved hjælp af basale, interval-, udvidede og parentesudvidelsesformer til at filtrere tekst præcist.

  • 🔎 Hvad de er: Regulære udtryk, forkortet til regexp eller regex, beskriver tekstmønstre til søgning og matchning.
  • 🧩 Basissæt: Symboler som . ^ $ * og \ anker-, gentagelses- og escape-tegn i et mønster.
  • 🔢 Interval: Parenteser som {n} og {n,m} styrer, hvor mange gange det foregående tegn gentages.
  • Udvidet: Med grep -E matcher \+ og \? en-eller-flere og nul-eller-en forekomster af et tegn.
  • 🧵 Udvidelse af bøjle: Krøllede parenteser genererer flere strenge fra en sekvens eller en kommasepareret liste.
  • 🛠️ Hvor brugt: Værktøjer som grep, sed, tr og vi bruger regulære udtryk til at filtrere tekst.
  • 🤖 AI-hjælp: AI-assistenter og GitHub Copilot kan hurtigt generere, forklare og fejlfinde regex-mønstre.

Linux regulære udtryk med grep — eksempler på grundlæggende, interval og udvidet regex

Regulære udtryk er en af ​​de mest kraftfulde funktioner i Linux tekstværktøjer, der giver dig mulighed for at matche, filtrere og transformere data med kompakte mønstre. Denne side forklarer de grundlæggende, interval- og udvidede former, plus klammerudvidelse, med eksempler på bearbejdede grep.

Hvad er regulære Linux-udtryk?

Regulære udtryk i Linux er specialtegn, der hjælper med at søge i data og matche komplekse mønstre. Regulære udtryk forkortes som 'regexp' eller 'regex'. De bruges i mange Linux-programmer, f.eks. grep, bash, omdøb, sed og mere.

Typer af regulære udtryk

For at lette forståelsen, lad os se på de forskellige typer regulære udtryk én efter én. Denne side dækker grundlæggende, interval- og udvidede regulære udtryk og afsluttes med parentesudvidelse.

Grundlæggende regulære udtryk

Nogle af de almindeligt anvendte kommandoer, der fungerer med regulære udtryk, er tr, sed, viog grep. Tabellen nedenfor viser nogle af de grundlæggende regulære udtryk.

Symbol Beskrivelse
. Erstatter ethvert tegn
^ Matcher starten af ​​en streng
$ Matcher slutningen af ​​en streng
* Matcher nul eller flere gange af det foregående tegn
\ Repræsenterer specialtegn
() Grupper regulære udtryk
? Matcher præcis ét tegn

Lad os se et eksempel. Kør først cat sample for at vise indholdet af en eksisterende fil, som vist nedenfor.

cat eksempelkommando, der viser indholdet af en eksisterende fil i terminalen

Søg derefter efter indhold, der indeholder bogstavet 'a'. Skærmbilledet nedenfor viser, at grep returnerer alle linjer, der indeholder et 'a'.

grep søger i eksempelfilen efter linjer, der indeholder bogstavet a

Cirkumflekstegnet '^' matcher starten af ​​en streng. Eksemplet nedenfor søger efter indhold, der starter med bogstavet 'a'.

grep med et cirkumfleksanker, der kun matcher linjer, der starter med bogstavet a

Kun linjer, der starter med tegnet , filtreres. Linjer, der ikke indeholder tegnet 'a' i starten, ignoreres.

Lad os se på et andet eksempel. Skærmbilledet nedenfor viser igen indholdet af eksempelfilen før filtrering efter slutningen af ​​en linje.

Eksempel på filindhold vist før filtrering af linjer, der slutter med bogstavet t

Vælg kun de linjer, der slutter med bogstavet 't', ved hjælp af '$'-ankeret, som vist nedenfor.

grep med et dollaranker, der kun vælger linjer, der slutter med bogstavet t

Interval Regulære udtryk

Disse udtryk angiver antallet af forekomster af et tegn i en streng. De er anført nedenfor.

Udtryk Beskrivelse
{ikke} Matcher det foregående tegn, der vises 'n' gange nøjagtigt
{n,m} Matcher det foregående tegn, der vises 'n' gange, men ikke mere end m
{n, } Matcher kun det foregående tegn, når det vises 'n' gange eller mere

For eksempel, filtrer alle linjer fra, der indeholder tegnet 'p'. Skærmbilledet nedenfor viser de matchende linjer.

grep filtrerer eksempelfilen for linjer, der indeholder tegnet p

Kontroller nu, at tegnet 'p' optræder præcis to gange i en streng, én efter én. Syntaksen for dette er:

cat sample | grep -E p\{2}

Resultatet af intervalkampen er vist nedenfor.

grep -E intervaludtryk, der matcher tegnet p, der optræder præcis to gange

Bemærk: Du skal tilføje -E med disse regulære udtryk.

Udvidede regulære udtryk

Disse regulære udtryk kombinerer mere end ét udtryk. Nogle af dem er:

Udtryk Beskrivelse
\+ Matcher en eller flere forekomster af det forrige tegn
\? Matcher nul eller én forekomst af det forrige tegn

Søg for eksempel efter alle forekomster af tegnet 't'. Skærmbilledet nedenfor viser resultatet.

grep søger i eksempelfilen efter alle linjer, der indeholder tegnet t

Antag, at du vil filtrere linjer fra, hvor tegnet 'a' kommer før tegnet 't'. Du kan bruge en kommando som den nedenfor:

cat sample|grep "a\+t"

Outputtet vises på følgende skærmbillede.

grep udvidet udtryk, der matcher et eller flere a-tegn efterfulgt af t

Bøjleudvidelse

Syntaksen for parentesudvidelse er enten en sekvens eller en kommasepareret liste af elementer inden for krøllede parenteser '{}'. Start- og slutelementerne i en sekvens er adskilt af to punktummer '..'.

Nogle eksempler er vist nedenfor.

echo-kommando bruger brace-udvidelse til at generere flere strenge fra en sekvens og en liste

I eksemplerne ovenfor opretter echo-kommandoen strenge ved hjælp af parentesudvidelse, hvilket producerer flere strenge ud af et enkelt mønster.

Ofte Stillede Spørgsmål

grep bruger som standard basale regulære udtryk. egrep aktiverer udvidede udtryk (det samme som grep -E), og fgrep matcher faste strenge uden regex (grep -F). Moderne GNU grep markerer egrep og fgrep som forældede, så foretrækker grep -E og grep -F.

Tegnklasser matcher en kategori af tegn. Parentesudtryk som [az] matcher et område, mens POSIX-klasser som [[:alpha:]], [[:digit:]] og [[:space:]] matcher bogstaver, tal og mellemrum. De holder mønstre læsbare og bærbare på tværs af forskellige lokaliteter.

Tilføj -i-indstillingen, for eksempel grep -i “hello” eksempel. Dette matcher både Hello, HELLO og hello. Uden -i skelner regulære udtryk mellem store og små bogstaver, så et stort bogstav og dets lille form behandles som to forskellige tegn.

Shell-jokertegn (globbing) udvider filnavne, hvor * betyder et hvilket som helst tegn, og ? betyder ét tegn. Regulære udtryk matcher tekst i filer, hvor * betyder nul eller flere af de foregående tegn. De samme symboler betyder forskellige ting i hver kontekst.

Brug -o-indstillingen, for eksempel grep -o “a\+t” eksempel. I stedet for at udskrive hele linjen, udskriver grep kun den del, der matcher mønsteret, ét match pr. linje. Det er nyttigt til f.eks.tracværdier såsom e-mails eller tal.

Brug alternering med pipe-symbolet. I udvidet tilstand matcher grep -E “cat|dog” sample linjer, der indeholder cat eller dog. I basistilstand skal du escape det som grep “cat\|dog” sample. Alternation lader én kommando søge efter flere mønstre på én gang.

AI-assistenter kan omdanne en almindelig engelsk beskrivelse til en fungerende regex, forklare, hvad et kryptisk mønster gør, og foreslå rettelser, når et match fejler. Maskinlæringsværktøjer registrerer også tilbagevendende mønstre i store logfiler, som ville være besværlige at skrive i hånden.

Ja. GitHub Copilot foreslår grep-kommandoer og regulære udtryk direkte fra en kommentar eller et delvist mønster, mens du skriver. Det fremskynder skrivningen af ​​komplekse udtryk, selvom du bør teste ethvert genereret mønster mod rigtige eksempeldata, før du stoler på det.

Opsummer dette indlæg med: