Linux Regular Expression-zelfstudie: Grep Regex-voorbeeld

Inhoudsopgave:

Anonim

Wat zijn reguliere Linux-expressies?

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

Soorten reguliere expressies

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

  • Basis reguliere expressies
  • Interval Reguliere expressies
  • Uitgebreide reguliere expressies
  • Overzicht

Klik hier als de video niet toegankelijk is

Basis reguliere expressies

Enkele van de veelgebruikte commando's met reguliere expressies zijn tr, sed, vi en grep. Hieronder staan ​​enkele van de standaard Regex.

Symbool Beschrijvingen
vervangt elk teken
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 teken

Laten we een voorbeeld bekijken.

Voer cat sample uit om de inhoud van een bestaand bestand te zien

Zoek naar inhoud die de letter 'a' bevat.

​ Laten we zoeken naar inhoud die BEGINT met een

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

Laten we naar een ander voorbeeld kijken -

Selecteer alleen de regels die eindigen op t met $

Interval Reguliere expressies

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

Uitdrukking Omschrijving
{n}

Komt overeen met het voorgaande teken dat 'n' keer exact 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 het 'n' keer of vaker voorkomt

Voorbeeld:

Filter alle regels uit die het teken 'p' bevatten

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

cat sample | grep -E p\{2}

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

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 exemplaar van het vorige teken

Voorbeeld:

Zoeken naar alle tekens 't'

Stel dat we regels willen filteren waarbij teken 'a' voorafgaat aan teken 't'

We kunnen commando's gebruiken zoals

cat sample|grep "a\+t"

Brace-uitbreiding

De syntaxis voor het uitbreiden van accolades is een reeks of een door komma's gescheiden lijst van items tussen accolades "{}". De begin- en einditems in een reeks worden gescheiden door twee punten "…".

Een paar voorbeelden:

In de bovenstaande voorbeelden maakt de echo-opdracht strings 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 uitdrukkingen te leren voor het schrijven van scripts
  • Enkele standaard reguliere expressies zijn:
Symbool Beschrijvingen
vervangt elk teken
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 exemplaar van het vorige teken
  • Enkele reguliere expressies voor intervallen zijn:
Uitdrukking Omschrijving
{n} Komt overeen met het voorgaande teken dat 'n' keer exact 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 het 'n' keer of vaker voorkomt
  • De accolade-uitbreiding wordt gebruikt om strings te genereren. Het helpt bij het maken van meerdere snaren uit één.