Zelfstudie over reguliere expressies van Linux: Grep Regex-voorbeeld
โก Slimme samenvatting
Linux-reguliere expressies zijn speciale tekenreeksen die gegevens doorzoeken en complexe patronen matchen in tools zoals grep, sed en vi. Ze gebruiken basis-, interval-, uitgebreide en brace-expansievormen om tekst nauwkeurig te filteren.

Reguliere expressies zijn een van de krachtigste functies van Linux Teksttools waarmee u gegevens kunt matchen, filteren en transformeren met compacte patronen. Deze pagina legt de basis-, interval- en uitgebreide vormen uit, evenals de uitbreiding met accolades, met uitgewerkte grep-voorbeelden.
Wat zijn Linux reguliere expressies?
Reguliere expressies in Linux zijn speciale tekens die helpen bij het zoeken in gegevens en het matchen van complexe patronen. Reguliere expressies worden afgekort tot 'regexp' of 'regex'. Ze worden gebruikt in veel Linux-programma's, zoals... grepbash, rename, sed en meer.
Soorten reguliere expressies
Laten we, om het beter te begrijpen, de verschillende soorten reguliere expressies รฉรฉn voor รฉรฉn bekijken. Deze pagina behandelt basis-, interval- en uitgebreide reguliere expressies en sluit af met de uitbreiding van reguliere expressies met accolades.
Basis reguliere expressies
Enkele veelgebruikte commando's die met reguliere expressies werken zijn tr, sed, vien grep. De onderstaande tabel geeft een overzicht van enkele basisreguliere expressies.
| Symbool | Beschrijving |
|---|---|
| . | Vervangt elk willekeurig teken |
| ^ | Komt overeen met het begin van een tekenreeks. |
| $ | Komt overeen met het einde van een tekenreeks. |
| * | Komt nul of meer keer overeen met het voorgaande teken. |
| \ | Vertegenwoordigt speciale tekens |
| () | Groepeert reguliere expressies |
| ? | Komt exact overeen met รฉรฉn teken. |
Laten we een voorbeeld bekijken. Voer eerst `cat sample` uit om de inhoud van een bestaand bestand weer te geven, zoals hieronder te zien is.
Zoek vervolgens naar inhoud die de letter 'a' bevat. De onderstaande schermafbeelding laat zien hoe grep alle regels retourneert die een 'a' bevatten.
Het dakje '^' komt overeen met het begin van een tekenreeks. Het onderstaande voorbeeld zoekt naar inhoud die begint met de letter 'a'.
Alleen regels die met het teken 'a' beginnen, worden gefilterd. Regels die niet met 'a' beginnen, worden genegeerd.
Laten we eens naar een ander voorbeeld kijken. De onderstaande schermafbeelding toont opnieuw de inhoud van het voorbeeldbestand voordat er gefilterd wordt op het einde van een regel.
Selecteer alleen de regels die eindigen op de letter 't' door het anker '$' te gebruiken, zoals hieronder weergegeven.
Interval Reguliere expressies
Deze uitdrukkingen specificeren het aantal keren dat een teken in een tekenreeks voorkomt. Ze staan โโhieronder vermeld.
| Expressie | Beschrijving |
|---|---|
| {N} | Komt exact overeen met het voorgaande teken dat 'n' keer voorkomt |
| {n,m} | Komt overeen met het voorgaande teken dat 'n' keer voorkomt, maar niet meer dan m |
| {N, } | Komt alleen overeen met het voorgaande teken als dit 'n' keer of vaker voorkomt |
Filter bijvoorbeeld alle regels eruit die de letter 'p' bevatten. De onderstaande schermafbeelding toont de overeenkomende regels.
Controleer nu of de letter 'p' precies twee keer achter elkaar in een tekenreeks voorkomt. De syntax hiervoor is:
cat sample | grep -E p\{2}
Het resultaat van de intervalwedstrijd wordt hieronder weergegeven.
Opmerking: bij deze reguliere expressies moet u -E toevoegen.
Uitgebreide reguliere expressies
Deze reguliere expressies combineren meer dan รฉรฉn expressie. Enkele voorbeelden zijn:
| Expressie | Beschrijving |
|---|---|
| \+ | Komt overeen met een of meer exemplaren van het vorige teken |
| \? | Komt overeen met nul of รฉรฉn keer dat het vorige teken voorkomt |
Zoek bijvoorbeeld naar alle voorkomende gevallen van de letter 't'. De onderstaande schermafbeelding toont het resultaat.
Stel dat u regels wilt filteren waarin de letter 'a' vรณรณr de letter 't' staat. U kunt hiervoor een opdracht gebruiken zoals hieronder:
cat sample|grep "a\+t"
Het resultaat wordt weergegeven in de volgende schermafbeelding.
Uitbreiding van de beugel
De syntaxis voor het uitbreiden van haakjes is een reeks of een door komma's gescheiden lijst van items tussen accolades '{}'. Het begin en einde van een reeks worden gescheiden door twee punten '..'.
Enkele voorbeelden worden hieronder weergegeven.
In de bovenstaande voorbeelden maakt het echo-commando tekenreeksen aan met behulp van accolade-expansie, waardoor meerdere tekenreeksen uit รฉรฉn enkel patroon worden gegenereerd.










