Awk

A Regex használata az 'awk' paranccsal

A Regex használata az 'awk' paranccsal

Egy reguláris kifejezés (regex) arra szolgál, hogy megtalálja a fájlban egy adott karaktersorozatot. Szimbólumok, például betűk, számjegyek és speciális karakterek használhatók a minta meghatározásához. A regexminták használatával a különböző feladatok könnyen elvégezhetők. Ebben az oktatóanyagban megmutatjuk, hogyan kell használni a regex mintákat az 'awk' paranccsal.

A mintákban használt alap karakterek

Sok karakter használható a regex minta meghatározására. A regex minták meghatározásához leggyakrabban használt karaktereket az alábbiakban definiáljuk.

karakter Leírás
. Bármely karakter egyeztetése új sor nélkül (\ n)
\ Idézzen egy új metakaraktert
^ Egyezik a sor elejével
$ Egyezik a sor végével
| Adjon meg egy alternatívát
() Definiáljon egy csoportot
[] Adjon meg egy karakterosztályt
\ w Bármilyen szóval egyezzen
\ s Illesszen be bármilyen szóköz karaktert
\ d Bármelyik számjeggyel egyezzen
\ b Illesszen bármilyen szóhatárot

Hozzon létre egy fájlt

Az oktatóanyag folytatásához hozzon létre egy nevű szövegfájlt Termékek.txt. A fájlnak négy mezőt kell tartalmaznia: ID, Name, Type és Price.

Azonosító neve Típus Ár

p1001 15 "monitor monitor 100 USD

p1002 A4tech egér 10 USD

p1003 Samsung nyomtató nyomtató 50 USD

p1004 HP szkenner szkenner 60 USD

p1005 Logitech egér 15 USD

1. példa: Adjon meg egy regex mintát a karakterosztály használatával

A következő 'awk' parancs megkeresi és kinyomtatja az 'n' karaktert, majd az 'er' karaktereket tartalmazó sorokat.

$ macska termékek.txt
$ awk '/ [n] [er] / print $ 0' termékek.txt

A fenti kimenet a fenti parancsok futtatása után jön létre. A kimenet a mintának megfelelő vonalat mutatja. Itt csak egy vonal felel meg a mintának.

2. példa: Adjon meg egy regex mintát a '^' szimbólummal

A következő 'awk' parancs megkeresi és kinyomtatja azokat a sorokat, amelyek „p” karakterrel kezdődnek, és tartalmazzák a 3. számot.

$ macska termékek.txt
$ awk '/ ^ o.* 3 / print $ 0 termék.txt

A fenti kimenet a fenti parancsok futtatása után jön létre. Itt van egy vonal, amely megfelel a mintának.

3. példa: Adjon meg egy regex mintát a gsub függvény segítségével

A gsub () függvény a szöveg globális keresésére és helyettesítésére szolgál. A következő 'awk' parancs megkeresi a 'Scanner' szót, és az eredmény nyomtatása előtt helyettesíti az 'Router' szóval.

$ macska termékek.txt
$ awk 'gsub (/ Scanner /, "Router")' termékek.txt

A fenti kimenet a fenti parancsok futtatása után jön létre. Van egy sor, amely tartalmazza a szótScanner"és"Scanner"helyébe a"Routera sor nyomtatása előtt.

4. példa: Regexminta meghatározása '*' karakterrel

A következő 'awk' parancs megkeresi és kinyomtatja az összes 'Mo' betűvel kezdődő karakterláncot, amely tartalmazza az esetleges későbbi karaktereket.

$ macska termékek.txt
$ awk '/ Mo * / print $ 0' termékek.txt

A fenti kimenet a fenti parancsok futtatása után jön létre. Három sor illik a mintához: két sor tartalmazza a "szótEgér"és egy sor tartalmazza a" szótMonitor".

5. példa: Adjon meg egy regex mintát a '$' szimbólummal

A következő 'awk' parancs az 5. számmal végződő sorokat keresi és kinyomtatja a fájlban.

$ macska termékek.txt
$ awk '/ 5 $ / print $ 0' termékek.txt

A fenti kimenet a fenti parancsok futtatása után jön létre.  A fájlban csak egy sor van, amely az 5-ös számmal végződik.

6. példa: Adjon meg egy regex mintát a '^' és a '|' használatával szimbólumok

A '^'szimbólum jelzi a sor elejét, és a'|'' szimbólum logikus VAGY utasítást jelöl. A következő 'awk' parancs megkeresi és kinyomtatja a 'karakterrel kezdődő sorokato"és tartalmazhatja"ScannervagyEgér".

$ macska termékek.txt
$ awk '/ ^ o.* (Szkenner | Egér) / 'termékek.txt

A fenti kimenet a fenti parancsok futtatása után jön létre. A kimenet azt mutatja, hogy két sor tartalmazza a 'szótEgér"és egy sor tartalmazza a" szótScanner". A három sor a karakterrel kezdődiko".

7. példa: Adjon meg egy regex mintát a „+” szimbólummal

A '+'az operátor legalább egy találatot talál. A következő 'awk' parancs megkeresi és kinyomtatja az 'karaktert tartalmazó sorokatn' legalább egyszer.

$ macska termékek.txt
$ awk '/ n + / print' termékek.txt

A fenti kimenet a fenti parancsok futtatása után jön létre. Itt a karakter 'nA 'tartalmaz legalább egyszer előfordul a szavakat tartalmazó sorokban Monitor, nyomtató és szkenner.

8. példa: Adjon meg egy regex mintát a gsub () függvény segítségével

A következő 'awk' parancs globálisan keresi az 'szótNyomtató"és cserélje ki a" szóraMonitor' használni a gsub () függvény.

$ macska termékek.txt
$ awk 'gsub (/ Printer / "Monitor") print $ 0' termékek.txt

A fenti kimenet a fenti parancsok futtatása után jön létre. A fájl negyedik sora a 'szót tartalmazzaNyomtató"kétszer, és a kimenetben"Nyomtató"helyébe a"Monitor".

Következtetés

Számos szimbólum és funkció használható a regexminták meghatározására a különböző keresési és helyettesítési feladatokhoz. A regexmintákban általánosan használt néhány szimbólumot ebben az oktatóanyagban az 'awk' paranccsal alkalmazzák.

OpenTTD bemutató
Az OpenTTD az egyik legnépszerűbb üzleti szimulációs játék. Ebben a játékban létre kell hoznia egy csodálatos szállítási vállalkozást. Azonban kezdete...
SuperTuxKart Linuxhoz
A SuperTuxKart egy nagyszerű cím, amelynek célja, hogy ingyenesen hozza el a Mario Kart élményét Linux rendszerén. Elég kihívást jelentő és szórakozta...
Csata a Wesnoth bemutatóért
A Battle for Wesnoth az egyik legnépszerűbb nyílt forráskódú stratégiai játék, amelyet jelenleg játszhatsz. Ez a játék nem csak nagyon hosszú ideje fe...