Awk

Sådan bruges Regex med kommandoen 'awk'

Sådan bruges Regex med kommandoen 'awk'

Et regulært udtryk (regex) bruges til at finde en given rækkefølge af tegn i en fil. Symboler som bogstaver, cifre og specialtegn kan bruges til at definere mønsteret. Forskellige opgaver kan let udføres ved hjælp af regex-mønstre. I denne vejledning viser vi dig, hvordan du bruger regex-mønstre med kommandoen 'awk'.

De grundlæggende tegn, der bruges i mønstre

Mange tegn kan bruges til at definere et regex-mønster. De tegn, der oftest bruges til at definere regex-mønstre, er defineret nedenfor.

Karakter Beskrivelse
. Match ethvert tegn uden en ny linje (\ n)
\ Citér en ny metakarakter
^ Match begyndelsen på en linje
$ Match slutningen af ​​en linje
| Definer en alternativ
() Definer en gruppe
[] Definer en karakterklasse
\ w Match ethvert ord
\ s Match ethvert hvidt mellemrum
\ d Match ethvert ciffer
\ b Match enhver ordgrænse

Opret en fil

For at følge med i denne vejledning skal du oprette en tekstfil med navnet Produkter.txt. Filen skal indeholde fire felter: ID, navn, type og pris.

ID-navn Type Pris

p1001 15 "skærmmonitor $ 100

p1002 A4tech-musmus $ 10

p1003 Samsung printerprinter $ 50

p1004 HP-scannerscanner $ 60

p1005 Logitech Mouse Mouse $ 15

Eksempel 1: Definer et regex-mønster ved hjælp af tegnklassen

Den følgende kommando 'awk' søger efter og udskriver linjer, der indeholder tegnet 'n' efterfulgt af tegnene 'er'.

$ kat produkter.txt
$ awk '/ [n] [er] / print $ 0' produkter.txt

Følgende output produceres efter kørsel af ovenstående kommandoer. Outputtet viser den linje, der matcher mønsteret. Her matcher kun en linje mønsteret.

Eksempel 2: Definer et regex-mønster ved hjælp af symbolet '^'

Den følgende kommando 'awk' søger efter og udskriver linjer, der starter med tegnet 'p' og inkluderer tallet 3.

$ kat produkter.txt
$ awk '/ ^ s.* 3 / udskriv $ 0 produkter.txt

Følgende output produceres efter kørsel af ovenstående kommandoer. Her er der en linje, der matcher mønsteret.

Eksempel 3: Definer et regex-mønster ved hjælp af gsub-funktionen

Det gsub () funktion bruges til globalt at søge efter og erstatte tekst. Den følgende kommando 'awk' søger efter ordet 'Scanner' og erstatter det med ordet 'Router', før resultatet udskrives.

$ kat produkter.txt
$ awk 'gsub (/ Scanner /, "Router")' produkter.txt

Følgende output produceres efter kørsel af ovenstående kommandoer. Der er en linje, der indeholder ordet 'Scanner'og'Scanner'erstattes af ordet'Router'før linjen udskrives.

Eksempel 4: Definer et regex-mønster med '*'

Den følgende kommando 'awk' søger efter og udskriver en streng, der starter med 'Mo' og inkluderer et efterfølgende tegn.

$ kat produkter.txt
$ awk '/ Mo * / print $ 0' produkter.txt

Følgende output produceres efter kørsel af ovenstående kommandoer. Tre linjer matcher mønsteret: to linjer indeholder ordet 'Mus'og en linje indeholder ordet'Overvåge''.

Eksempel 5: Definer et regex-mønster ved hjælp af '$' symbolet

Den følgende kommando 'awk' søger efter og udskriver linjer i filen, der slutter med nummeret 5.

$ kat produkter.txt
$ awk '/ 5 $ / print $ 0' produkter.txt

Følgende output produceres efter kørsel af ovenstående kommandoer.  Der er kun en linje i filen, der slutter med tallet 5.

Eksempel 6: Definer et regex-mønster ved hjælp af '^' og '|' symboler

Det '^'symbol angiver starten på en linje, og'|'symbol angiver et logisk ELLER udsagn. Den følgende kommando 'awk' søger efter og udskriver linjer, der starter med tegnet 's'og indeholder enten'Scanner'eller'Mus''.

$ kat produkter.txt
$ awk '/ ^ s.* (Scanner | Mus) / 'produkter.txt

Følgende output produceres efter kørsel af ovenstående kommandoer. Outputtet viser, at to linjer indeholder ordet 'Mus'og en linje indeholder ordet'Scanner''. De tre linjer starter med tegnet 's''.

Eksempel 7: Definer et regex-mønster ved hjælp af '+' symbolet

Det '+'operatør bruges til at finde mindst et match. Den følgende kommando 'awk' søger efter og udskriver linjer, der indeholder tegnet 'n' mindst en gang.

$ kat produkter.txt
$ awk '/ n + / print' produkter.txt

Følgende output produceres efter kørsel af ovenstående kommandoer. Her er karakteren 'n'indeholder forekommer mindst én gang i de linjer, der indeholder ordene Skærm, printer og scanner.

Eksempel 8: Definer et regex-mønster ved hjælp af funktionen gsub ()

Den følgende kommando 'awk' søger globalt efter ordet 'Printer'og erstatt det med ordet'Overvåge' bruger gsub () funktion.

$ kat produkter.txt
$ awk 'gsub (/ Printer /, "Monitor") print $ 0' produkter.txt

Følgende output produceres efter kørsel af ovenstående kommandoer. Den fjerde linje i filen indeholder ordet 'Printer'to gange og i output'Printer'er blevet erstattet af ordet'Overvåge''.

Konklusion

Mange symboler og funktioner kan bruges til at definere regex-mønstre til forskellige søge- og udskiftningsopgaver. Nogle symboler, der ofte bruges i regex-mønstre, anvendes i denne vejledning med kommandoen 'awk'.

Sådan downloades og afspilles Sid Meiers Civilization VI på Linux
Introduktion til spillet Civilization 6 er et moderne udtryk for det klassiske koncept, der blev introduceret i serien af ​​Age of Empires-spil. Ideen...
Sådan installeres og afspilles Doom på Linux
Introduktion til undergang Doom-serien opstod i 90'erne efter frigivelsen af ​​den originale Doom. Det var et øjeblikkeligt hit, og fra den tid af har...
Vulkan til Linux-brugere
Med hver nye generation af grafikkort ser vi spiludviklere skubbe grænserne for grafisk troskab og komme et skridt tættere på fotorealisme. Men på tro...