Awk

Hur man använder Regex med kommandot 'awk'

Hur man använder Regex med kommandot 'awk'

Ett reguljärt uttryck (regex) används för att hitta en given teckenföljd i en fil. Symboler som bokstäver, siffror och specialtecken kan användas för att definiera mönstret. Olika uppgifter kan enkelt slutföras med hjälp av regex-mönster. I denna handledning visar vi dig hur du använder regex-mönster med kommandot 'awk'.

De grundläggande karaktärerna som används i mönster

Många tecken kan användas för att definiera ett regex-mönster. De tecken som oftast används för att definiera regexmönster definieras nedan.

Karaktär Beskrivning
. Matcha alla karaktärer utan en ny rad (\ n)
\ Citera en ny metakaraktär
^ Matcha början på en rad
$ Matcha slutet på en rad
| Definiera ett alternativ
() Definiera en grupp
[] Definiera en karaktärsklass
\ w Matcha vilket ord som helst
\ s Matcha alla vita tecken
\ d Matcha alla siffror
\ b Matcha valfri ordgräns

Skapa en fil

För att följa med denna handledning skapar du en textfil med namnet Produkter.Text. Filen ska innehålla fyra fält: ID, namn, typ och pris.

ID Namn Typ Pris

p1001 15 "bildskärm $ 100

p1002 A4tech-musmus $ 10

p1003 Samsung-skrivare $ 50

p1004 HP Scanner Scanner $ 60

p1005 Logitech Mouse Mouse $ 15

Exempel 1: Definiera ett regexmönster med hjälp av teckenklassen

Följande kommando 'awk' söker efter och skriver ut rader som innehåller tecknet 'n' följt av tecknen 'er'.

$ kattprodukter.Text
$ awk '/ [n] [er] / print $ 0' produkter.Text

Följande utdata produceras efter att ovanstående kommandon har körts. Utgången visar linjen som matchar mönstret. Här matchar endast en rad mönstret.

Exempel 2: Definiera ett regex-mönster med symbolen '^'

Följande kommando 'awk' söker efter och skriver ut rader som börjar med tecknet 'p' och inkluderar siffran 3.

$ kattprodukter.Text
$ awk '/ ^ s.* 3 / print $ 0 produkter.Text

Följande utdata produceras efter att ovanstående kommandon har körts. Här finns det en rad som matchar mönstret.

Exempel 3: Definiera ett regexmönster med gsub-funktionen

De gsub () funktionen används för att globalt söka efter och ersätta text. Följande "awk" -kommando söker efter ordet "Scanner" och ersätter det med ordet "Router" innan resultatet skrivs ut.

$ kattprodukter.Text
$ awk 'gsub (/ Scanner /, "Router")' produkter.Text

Följande utdata produceras efter att ovanstående kommandon har körts. Det finns en rad som innehåller ordet 'Scanner'och'Scanner'ersätts med ordet'Routerinnan linjen skrivs ut.

Exempel 4: Definiera ett regex-mönster med '*'

Följande "awk" -kommando söker efter och skriver ut alla strängar som börjar med "Mo" och innehåller alla efterföljande tecken.

$ kattprodukter.Text
$ awk '/ Mo * / print $ 0' produkter.Text

Följande utdata produceras efter att ovanstående kommandon har körts. Tre rader matchar mönstret: två rader innehåller ordet 'Mus'och en rad innehåller ordet'Övervaka''.

Exempel 5: Definiera ett regex-mönster med symbolen '$'

Följande kommando 'awk' söker efter och skriver ut rader i filen som slutar med siffran 5.

$ kattprodukter.Text
$ awk '/ 5 $ / print $ 0' produkter.Text

Följande utdata produceras efter att ovanstående kommandon har körts.  Det finns bara en rad i filen som slutar med siffran 5.

Exempel 6: Definiera ett regex-mönster med '^' och '|' symboler

'^'symbol anger början på en rad och'|'symbol indikerar ett logiskt ELLER uttalande. Följande kommando 'awk' söker efter och skriver ut rader som börjar med tecknet 'sid'och innehåller antingen'Scanner'eller'Mus''.

$ kattprodukter.Text
$ awk '/ ^ s.* (Skanner | Mus) / 'produkter.Text

Följande utdata produceras efter att ovanstående kommandon har körts. Utgången visar att två rader innehåller ordet 'Mus'och en rad innehåller ordet'Scanner''. De tre raderna börjar med karaktären 'sid''.

Exempel 7: Definiera ett regexmönster med symbolen '+'

'+Operatören används för att hitta minst en matchning. Följande kommando 'awk' söker efter och skriver ut rader som innehåller tecknet 'n' åtminstone en gång.

$ kattprodukter.Text
$ awk '/ n + / print' produkter.Text

Följande utdata produceras efter att ovanstående kommandon har körts. Här, karaktären 'n'innehåller förekommer minst en gång i raderna som innehåller orden Skärm, skrivare och skanner.

Exempel 8: Definiera ett regexmönster med funktionen gsub ()

Följande "awk" -kommando söker globalt efter ordet "Skrivare'och ersätt det med ordet'Övervaka' använda gsub () -funktionen.

$ kattprodukter.Text
$ awk 'gsub (/ Printer /, "Monitor") print $ 0' produkter.Text

Följande utdata produceras efter att ovanstående kommandon har körts. Den fjärde raden i filen innehåller ordet 'Skrivare"två gånger, och i utgången,"Skrivare'har ersatts med ordet'Övervaka''.

Slutsats

Många symboler och funktioner kan användas för att definiera regexmönster för olika sök- och ersättningsuppgifter. Vissa symboler som vanligtvis används i regex-mönster används i den här självstudien med kommandot 'awk'.

Topp 10 spel att spela på Ubuntu
Windows-plattformen har varit en av de dominerande plattformarna för spel på grund av den enorma andelen spel som utvecklas idag för att stödja Window...
5 bästa arkadspel för Linux
Numera är datorer seriösa maskiner som används för spel. Om du inte kan få den nya poängen vet du vad jag menar. I det här inlägget kommer du att känn...
Strid om Wesnoth 1.13.6 Utveckling släppt
Strid om Wesnoth 1.13.6 släpptes förra månaden, är den sjätte utvecklingsversionen i 1.13.x-serien och den levererar ett antal förbättringar, framför ...