Zelfstudie over reguliere expressies van Linux: Grep Regex-voorbeeld

Wat zijn Linux reguliere expressies?

Reguliere expressies van Linux zijn speciale tekens die helpen bij het zoeken naar gegevens en het matchen van complex patronen. Reguliere expressies worden afgekort als 'regexp' of 'regex'. Ze worden gebruikt in veel Linux-programma's zoals grep, bash, rename, sed, enz.

Soorten reguliere expressies

Laten we voor een beter begrip de verschillende soorten Regex één voor één leren.

Klik hier als de video niet toegankelijk is

Basis reguliere expressies

Enkele veelgebruikte opdrachten met reguliere expressies zijn tr, sed, vi en grep. Hieronder vindt u enkele van de basis Regex.

Symbool beschrijvingen
. vervangt elk karakter
^ komt overeen met het begin van de tekenreeks
$ komt overeen met het einde van de tekenreeks
* komt nul of meer keer overeen met het voorgaande teken
\ Vertegenwoordig speciale karakters
() Groepeert reguliere expressies
? Komt overeen met precies één karakter

Laten we een voorbeeld bekijken.

Voer een cat-voorbeeld uit om de inhoud van een bestaand bestand te bekijken

Basis reguliere expressies

Zoek naar inhoud die de letter 'a' bevat.

Basis reguliere expressies

'^' komt overeen met het begin van een tekenreeks. Laten we zoeken naar inhoud die BEGINT met een

Basis reguliere expressies

Alleen regels die beginnen met een teken worden gefilterd. Regels die aan het begin niet het teken 'a' bevatten, worden genegeerd.

Laten we eens naar een ander voorbeeld kijken –

Basis reguliere expressies

Selecteer alleen die regels die eindigen op t met behulp van $

Basis reguliere expressies

Interval Reguliere expressies

Deze expressies vertellen ons over het aantal keren dat een teken in een string voorkomt. Zij zijn

Uitdrukking Omschrijving
{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

Voorbeeld:

Filter alle regels uit die het teken 'p' bevatten

Interval Reguliere expressies

We willen controleren of het teken 'p' precies 2 keer achter elkaar in een string voorkomt. Hiervoor zou de syntaxis zijn:

cat sample | grep -E p\{2}

Interval Reguliere expressies

Opmerking: bij deze reguliere expressies moet u -E toevoegen.

Uitgebreide reguliere expressies

Deze reguliere expressies bevatten combinaties van meer dan één expressie. Sommige ervan zijn:

Uitdrukking Omschrijving
\+ Komt overeen met een of meer exemplaren van het vorige teken
\? Komt overeen met nul of één keer dat het vorige teken voorkomt

Voorbeeld:

Zoeken naar alle tekens 't'

Uitgebreide reguliere expressies

Stel dat we regels willen uitfilteren waar teken 'a' voorafgaat aan teken 't'

We kunnen een commando gebruiken zoals

cat sample|grep "a\+t"

Uitgebreide reguliere expressies

Uitbreiding van de beugel

De syntaxis voor accolade-uitbreiding is een reeks of een door komma's gescheiden lijst met items tussen accolades “{}”. De begin- en einditems in een reeks worden gescheiden door twee punten “...”.

Een paar voorbeelden:

Uitbreiding van de beugel

In de bovenstaande voorbeelden maakt het echo-commando tekenreeksen met behulp van de accolade-uitbreiding.

Overzicht:

  • Reguliere expressies zijn een reeks tekens die worden gebruikt om patronen in tekenreeksen te controleren
  • Ze worden ook wel 'regexp' en 'regex' genoemd
  • Het is belangrijk om reguliere expressies te leren voor het schrijven van scripts
  • Enkele fundamentele reguliere expressies zijn:
Symbool beschrijvingen
. vervangt elk karakter
^ komt overeen met het begin van de tekenreeks
$ komt overeen met het einde van de tekenreeks
  • Enkele uitgebreide reguliere expressies zijn:
Uitdrukking Omschrijving

\+

Komt overeen met een of meer exemplaren van het vorige teken
\? Komt overeen met nul of één keer dat het vorige teken voorkomt
  • Enkele reguliere intervalexpressies zijn:
Uitdrukking Omschrijving
{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
  • De accolade-uitbreiding wordt gebruikt om strings te genereren. Het helpt bij het maken van meerdere strings uit één.