Regulární výraz (regulární výraz) se používá k vyhledání dané posloupnosti znaků v souboru. K definování vzoru lze použít symboly, jako jsou písmena, číslice a speciální znaky. Různé úkoly lze snadno dokončit pomocí vzorů regulárního výrazu. V tomto kurzu vám ukážeme, jak používat regexové vzory pomocí příkazu 'awk'.
Základní znaky používané ve vzorech
Mnoho znaků lze použít k definování vzoru regulárního výrazu. Níže jsou definovány znaky, které se nejčastěji používají k definování vzorů regulárního výrazu.
Charakter | Popis |
---|---|
. | Porovnat libovolný znak bez nového řádku (\ n) |
\ | Uveďte novou metaznak |
^ | Porovná začátek řádku |
$ | Porovnejte konec řádku |
| | Definujte alternativu |
() | Definujte skupinu |
[] | Definujte třídu znaků |
\ w | Porovnejte libovolné slovo |
\ s | Porovnejte libovolný znak prázdného místa |
\ d | Porovnejte libovolnou číslici |
\ b | Porovnejte jakoukoli hranici slova |
Vytvořte soubor
Chcete-li pokračovat v tomto kurzu, vytvořte textový soubor s názvem produkty.txt. Soubor by měl obsahovat čtyři pole: ID, Název, Typ a Cena.
ID Název Typ Cena
p1001 15 "Monitor Monitor 100 $
p1002 A4tech Mouse Mouse $ 10
p1003 Samsung Printer Printer $ 50
p1004 Skener HP Skener 60 $
p1005 Logitech Mouse Mouse $ 15
Příklad 1: Definujte vzor regulárního výrazu pomocí třídy znaků
Následující příkaz 'awk' vyhledá a vytiskne řádky obsahující znak 'n' následovaný znaky 'er'.
$ kočičí výrobky.txt$ awk '/ [n] [er] / print $ 0' produkty.txt
Následující výstup bude vytvořen po spuštění výše uvedených příkazů. Výstup ukazuje řádek, který odpovídá vzoru. Zde vzor odpovídá pouze jednomu řádku.
Příklad 2: Definujte vzor regulárního výrazu pomocí symbolu „^“
Následující příkaz 'awk' vyhledá a vytiskne řádky, které začínají znakem 'p' a obsahují číslo 3.
$ kočičí výrobky.txt$ awk '/ ^ str.* 3 / print $ 0 'products.txt
Následující výstup bude vytvořen po spuštění výše uvedených příkazů. Zde je jeden řádek, který odpovídá vzoru.
Příklad 3: Definujte vzor regulárního výrazu pomocí funkce gsub
The gsub () funkce se používá ke globálnímu vyhledávání a nahrazování textu. Následující příkaz 'awk' vyhledá slovo 'Scanner' a nahradí jej slovem 'Router' před tiskem výsledku.
$ kočičí výrobky.txt$ awk 'gsub (/ Scanner /, "Router")' produkty.txt
Následující výstup bude vytvořen po spuštění výše uvedených příkazů. Jeden řádek obsahuje slovo „Skener', a 'Skener„se nahrazuje slovem“Router'před vytištěním řádku.
Příklad 4: Definujte vzor regulárního výrazu pomocí '*'
Následující příkaz „awk“ vyhledá a vytiskne jakýkoli řetězec, který začíná řetězcem „Mo“ a zahrnuje jakýkoli následující znak.
$ kočičí výrobky.txt$ awk '/ Mo * / print $ 0' produkty.txt
Následující výstup bude vytvořen po spuštění výše uvedených příkazů. Tři řádky odpovídají vzoru: dva řádky obsahují slovo 'Myš„a jeden řádek obsahuje slovo“Monitor''.
Příklad 5: Definujte vzor regulárního výrazu pomocí symbolu „$“
Následující příkaz 'awk' vyhledá a vytiskne řádky v souboru, které končí číslem 5.
$ kočičí výrobky.txt$ awk '/ 5 $ / print $ 0' produkty.txt
Následující výstup bude vytvořen po spuštění výše uvedených příkazů. V souboru je pouze jeden řádek, který končí číslem 5.
Příklad 6: Definujte regulární výraz pomocí '^' a '|' symboly
'^'symbol označuje začátek řádku a'|Symbol 'označuje logický příkaz OR. Následující příkaz 'awk' vyhledá a vytiskne řádky, které začínají znakem 'p'and contain either'Skener'nebo'Myš''.
$ kočičí výrobky.txt$ awk '/ ^ str.* (Skener | Myš) / 'produkty.txt
Následující výstup bude vytvořen po spuštění výše uvedených příkazů. Výstup ukazuje, že dva řádky obsahují slovo 'Myš„a jeden řádek obsahuje slovo“Skener''. Tři řádky začínají znakem 'p''.
Příklad 7: Definujte vzor regulárního výrazu pomocí symbolu „+“
'+„operátor slouží k vyhledání alespoň jedné shody. Následující příkaz 'awk' vyhledá a vytiskne řádky, které obsahují znak 'n' alespoň jednou.
$ kočičí výrobky.txt$ awk '/ n + / print' produkty.txt
Následující výstup bude vytvořen po spuštění výše uvedených příkazů. Tady postavan'contains se vyskytuje alespoň jednou v řádcích, které obsahují slova Monitor, tiskárna a skener.
Příklad 8: Definujte vzor regulárního výrazu pomocí funkce gsub ()
Následující příkaz 'awk' globálně vyhledá slovo 'Tiskárna„a nahradit jej slovem“Monitor' za použití funkce gsub ().
$ kočičí výrobky.txt$ awk 'gsub (/ Printer /, “Monitor”) print $ 0' products.txt
Následující výstup bude vytvořen po spuštění výše uvedených příkazů. Čtvrtý řádek souboru obsahuje slovo „Tiskárna„dvakrát a na výstupu,“Tiskárna„bylo nahrazeno slovem“Monitor''.
Závěr
Mnoho symbolů a funkcí lze použít k definování vzorů regulárního výrazu pro různé úlohy hledání a nahrazení. Některé symboly běžně používané ve vzorech regulárních výrazů jsou v tomto kurzu použity pomocí příkazu 'awk'.