Awk

Hvordan bruke Regex med kommandoen 'awk'

Hvordan bruke Regex med kommandoen 'awk'

Et vanlig uttrykk (regex) brukes til å finne en gitt sekvens av tegn i en fil. Symboler som bokstaver, sifre og spesialtegn kan brukes til å definere mønsteret. Ulike oppgaver kan enkelt fullføres ved hjelp av regex-mønstre. I denne opplæringen vil vi vise deg hvordan du bruker regex-mønstre med kommandoen 'awk'.

De grunnleggende tegnene som brukes i mønstre

Mange tegn kan brukes til å definere et regex-mønster. Tegnene som oftest brukes til å definere regex-mønstre er definert nedenfor.

Karakter Beskrivelse
. Match hvilket som helst tegn uten en ny linje (\ n)
\ Sitat en ny metakarakter
^ Match begynnelsen på en linje
$ Match slutten av en linje
| Definer en alternativ
() Definer en gruppe
[] Definer en karakterklasse
\ w Match hvilket som helst ord
\ s Match ethvert hvitt mellomrom
\ d Match hvilket som helst siffer
\ b Match hvilken som helst ordgrense

Lag en fil

For å følge denne veiledningen, opprett en tekstfil med navnet Produkter.tekst. Filen skal inneholde fire felt: ID, navn, type og pris.

ID-navn Type Pris

p1001 15 "Monitor Monitor $ 100

p1002 A4tech Mouse Mouse $ 10

p1003 Samsung skriverskriver $ 50

p1004 HP skannerskanner $ 60

p1005 Logitech Mouse Mouse $ 15

Eksempel 1: Definer et regex-mønster ved hjelp av tegnklassen

Følgende kommando 'awk' vil søke etter og skrive ut linjer som inneholder tegnet 'n' etterfulgt av tegnene 'er'.

$ katteprodukter.tekst
$ awk '/ [n] [er] / print $ 0' produkter.tekst

Følgende utdata blir produsert etter å ha kjørt kommandoene ovenfor. Utgangen viser linjen som samsvarer med mønsteret. Her samsvarer bare en linje med mønsteret.

Eksempel 2: Definer et regex-mønster ved hjelp av '^' -symbolet

Følgende kommando 'awk' søker etter og skriver ut linjer som begynner med tegnet 'p' og inkluderer tallet 3.

$ katteprodukter.tekst
$ awk '/ ^ s.* 3 / print $ 0 produkter.tekst

Følgende utdata blir produsert etter å ha kjørt kommandoene ovenfor. Her er det en linje som samsvarer med mønsteret.

Eksempel 3: Definer et regex-mønster ved hjelp av gsub-funksjonen

De gsub () funksjonen brukes til å søke etter og erstatte tekst globalt. Følgende kommando "awk" vil søke etter ordet "Skanner" og erstatte det med ordet "Ruter" før resultatet skrives ut.

$ katteprodukter.tekst
$ awk 'gsub (/ Scanner /, "Router")' produkter.tekst

Følgende utdata blir produsert etter å ha kjørt kommandoene ovenfor. Det er en linje som inneholder ordet 'Skanner', og'Skanner'erstattes av ordet'Ruter'før linjen skrives ut.

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

Følgende kommando "awk" vil søke etter og skrive ut en streng som begynner med "Mo" og inkluderer alle påfølgende tegn.

$ katteprodukter.tekst
$ awk '/ Mo * / print $ 0' produkter.tekst

Følgende utdata blir produsert etter å ha kjørt kommandoene ovenfor. Tre linjer samsvarer med mønsteret: to linjer inneholder ordet 'Mus'og en linje inneholder ordet'Observere'.

Eksempel 5: Definer et regex-mønster ved hjelp av '$' symbolet

Følgende kommando 'awk' vil søke etter og skrive ut linjer i filen som slutter med tallet 5.

$ katteprodukter.tekst
$ awk '/ 5 $ / print $ 0' produkter.tekst

Følgende utdata blir produsert etter å ha kjørt kommandoene ovenfor.  Det er bare en linje i filen som slutter med tallet 5.

Eksempel 6: Definer et regex-mønster ved hjelp av '^' og '|' symboler

The '^'symbolet indikerer starten på en linje, og'|'symbol indikerer en logisk ELLER uttalelse. Følgende kommando 'awk' vil søke etter og skrive ut linjer som begynner med tegnet 's'og inneholder enten'Skanner'eller'Mus'.

$ katteprodukter.tekst
$ awk '/ ^ s.* (Skanner | Mus) / 'produkter.tekst

Følgende utdata blir produsert etter å ha kjørt kommandoene ovenfor. Utgangen viser at to linjer inneholder ordet 'Mus'og en linje inneholder ordet'Skanner'. De tre linjene starter med tegnet 's'.

Eksempel 7: Definer et regex-mønster ved hjelp av '+' symbolet

The '+'operatør brukes til å finne minst en kamp. Følgende kommando 'awk' vil søke etter og skrive ut linjer som inneholder tegnet 'n' i hvert fall en gang.

$ katteprodukter.tekst
$ awk '/ n + / print' produkter.tekst

Følgende utdata blir produsert etter å ha kjørt kommandoene ovenfor. Her, karakteren 'n'inneholder forekommer minst en gang i linjene som inneholder ordene Skjerm, skriver og skanner.

Eksempel 8: Definer et regex-mønster ved hjelp av funksjonen gsub ()

Følgende kommando 'awk' vil globalt søke etter ordet 'Skriver'og erstatt det med ordet'Observere' bruker funksjonen gsub ().

$ katteprodukter.tekst
$ awk 'gsub (/ Printer /, "Monitor") print $ 0' produkter.tekst

Følgende utdata blir produsert etter å ha kjørt kommandoene ovenfor. Den fjerde linjen i filen inneholder ordet 'Skriver'to ganger, og i utgangen,'Skriver'har blitt erstattet av ordet'Observere'.

Konklusjon

Mange symboler og funksjoner kan brukes til å definere regex-mønstre for forskjellige søke- og erstatningsoppgaver. Noen symboler som ofte brukes i regex-mønstre, brukes i denne opplæringen med kommandoen 'awk'.

Mus Topp 5 ergonomiske datamuseprodukter for Linux
Topp 5 ergonomiske datamuseprodukter for Linux
Gir langvarig bruk av datamaskiner smerter i håndleddet eller fingrene? Lider du av stive ledd og må hele tiden riste på deg hendene? Føler du en bren...
Mus Hvordan endre mus og berøringsplateinnstillinger ved hjelp av Xinput i Linux
Hvordan endre mus og berøringsplateinnstillinger ved hjelp av Xinput i Linux
De fleste Linux-distribusjoner leveres med "libinput" -biblioteket som standard for å håndtere inngangshendelser på et system. Den kan behandle inngan...
Mus Kartlegg museknappene på en annen måte for annen programvare med X-Mouse Button Control
Kartlegg museknappene på en annen måte for annen programvare med X-Mouse Button Control
Kanskje du trenger et verktøy som kan gjøre at musens kontroll endres med hvert program du bruker. Hvis dette er tilfelle, kan du prøve et program som...