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.