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'.