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 å bruke regex -mønstre. I denne opplæringen vil vi vise deg hvordan du bruker regex -mønstre med 'awk' -kommandoen.
Grunnpersonene som brukes i mønstre
Mange tegn kan brukes til å definere et regex -mønster. Karakterene som oftest brukes til å definere regex -mønstre er definert nedenfor.
Karakter | Beskrivelse |
---|---|
. | Match noen karakter uten en ny linje (\ n) |
\ | Sitat en ny metakarakter |
^ | Match begynnelsen på en linje |
$ | Match slutten av en linje |
| | Definer et alternativ |
() | Definere en gruppe |
[] | Definer en karakterklasse |
\ w | Match ethvert ord |
\ S | Match enhver hvit romkarakter |
\ d | Match ethvert siffer |
\ b | Match en hvilken som helst ordgrense |
Opprett en fil
For å følge med med denne opplæringen, oppretter du en tekstfil som heter Produkter.tekst. Filen skal inneholde fire felt: ID, navn, type og pris.
ID Navn Type Pris
P1001 15 "Monitor Monitor $ 100
P1002 A4Tech Mus Mouse $ 10
P1003 Samsung Printer Printer $ 50
P1004 HP Scanner Scanner $ 60
P1005 Logitech Mouse Mouse $ 15
Eksempel 1: Definer et regex -mønster ved hjelp av karakterklassen
Følgende 'awk' -kommando vil søke etter og utskriftslinjer som inneholder tegnet 'n' etterfulgt av karakterene 'er'.
$ katteprodukter.tekst
$ awk '/ [n] [er]/ skriv ut $ 0' produkter.tekst
Følgende utgang vil bli produsert etter å ha kjørt kommandoene ovenfor. Utgangen viser linjen som samsvarer med mønsteret. Her samsvarer bare med en linje mønsteret.
Eksempel 2: Definer et regex -mønster ved hjelp av '^' -symbolet
Følgende 'AWK' -kommando vil søke etter og skrive ut linjer som starter med tegnet 'P' og inkluderer nummer 3.
$ katteprodukter.tekst
$ awk '/^p.*3/ skriv ut $ 0 'produkter.tekst
Følgende utgang vil bli 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 () Funksjon brukes til å søke globalt etter og erstatte tekst. Følgende 'awk' kommando vil søke etter ordet 'skanner' og erstatte det med ordet 'ruter' før du skriver ut resultatet.
$ katteprodukter.tekst
$ awk 'gsub (/scanner/, "router")' produkter.tekst
Følgende utgang vil bli 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 'awk' -kommando vil søke etter og skrive ut hvilken som helst streng som starter med 'mo' og inkluderer ethvert påfølgende tegn.
$ katteprodukter.tekst
$ awk '/ mo*/ skriv ut $ 0' produkter.tekst
Følgende utgang vil bli 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 'AWK' -kommando vil søke etter og skrive ut linjer i filen som avsluttes med nummer 5.
$ katteprodukter.tekst
$ awk '/ 5 $/ skriv ut $ 0' produkter.tekst
Følgende utgang vil bli produsert etter å ha kjørt kommandoene ovenfor. Det er bare en linje i filen som ender med nummer 5.
Eksempel 6: Definer et regex -mønster ved å bruke '^' og '|' symboler
'^'Symbol indikerer starten på en linje, og'|'Symbol indikerer en logisk eller uttalelse. Følgende 'AWK' -kommando vil søke etter og skrive ut linjer som starter med tegnet 'p'og inneholder en av'Skanner'Eller'Mus'.
$ katteprodukter.tekst
$ awk '/^p.* (Skanner | mus)/'produkter.tekst
Følgende utgang vil bli 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 karakteren 'p'.
Eksempel 7: Definer et regex -mønster ved hjelp av '+' -symbolet
'+Operatøren brukes til å finne minst en kamp. Følgende 'awk' -kommando 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 utgang vil bli produsert etter å ha kjørt kommandoene ovenfor. Her, karakteren 'n'Inneholder forekommer minst en gang i linjene som inneholder ordene Monitor, skriver og skanner.
Eksempel 8: Definer et regex -mønster ved hjelp av GSUB () -funksjonen
Følgende 'awk' kommando vil globalt søke etter ordet 'Skriver'og erstatt det med ordet'Observere' bruker GSUB () -funksjon.
$ katteprodukter.tekst
$ awk 'gsub (/printer/, “monitor”) print $ 0' produkter.tekst
Følgende utgang vil bli 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øk og erstatte oppgaver. Noen symboler som vanligvis brukes i regex -mønstre, brukes i denne opplæringen med 'awk' -kommandoen.