Регулярният израз (регулярният израз) се използва за намиране на дадена последователност от символи във файл. Символи като букви, цифри и специални знаци могат да се използват за определяне на шаблона. Различни задачи могат лесно да бъдат изпълнени с помощта на регулярни изрази. В този урок ще ви покажем как да използвате шаблони на регулярни изрази с командата 'awk'.
Основните символи, използвани в шаблони
Много символи могат да се използват за определяне на модел на регулярно изражение. Най-често използваните символи за дефиниране на регулярни изрази са определени по-долу.
Характер | Описание |
---|---|
. | Съвпадение с всеки символ без нов ред (\ n) |
\ | Цитирайте нов метасимвол |
^ | Съвпадение на началото на ред |
$ | Съвпадение на края на ред |
| | Определете заместник |
() | Определете група |
[] | Дефинирайте клас знаци |
\ w | Съвпадение с всяка дума |
\с | Съвпадайте с всеки празен знак |
\д | Съвпадение с всяка цифра |
\ b | Съвпадайте с всяка граница на думата |
Създайте файл
За да продължите заедно с този урок, създайте текстов файл с име продукти.текст. Файлът трябва да съдържа четири полета: ID, име, тип и цена.
ИД Име Тип Цена
p1001 15 "монитор за монитор $ 100
p1002 A4tech Мишка Мишка $ 10
p1003 Принтер Samsung Принтер $ 50
p1004 HP скенер скенер $ 60
p1005 Мишка Logitech за мишка $ 15
Пример 1: Дефинирайте модел на регулярно изражение, като използвате клас символи
Следващата команда 'awk' ще търси и отпечатва редове, съдържащи символа 'n', последван от символите 'er'.
$ котешки продукти.текст$ awk '/ [n] [er] / print $ 0' продукти.текст
След изпълнението на горните команди ще се получи следният изход. Изходът показва линията, която съответства на модела. Тук само един ред отговаря на модела.
Пример 2: Определете модел на регулярно изражение, като използвате символа '^'
Следващата команда 'awk' ще търси и отпечатва редове, които започват със знака 'p' и включват числото 3.
$ котешки продукти.текст$ awk '/ ^ стр.* 3 / print $ 0 'продукти.текст
След изпълнението на горните команди ще се получи следният изход. Тук има един ред, който съответства на модела.
Пример 3: Дефинирайте модел на регулярно изражение, като използвате функцията gsub
The gsub () функция се използва за глобално търсене и замяна на текст. Следващата команда 'awk' ще търси думата 'Scanner' и ще я замени с думата 'Router', преди да отпечата резултата.
$ котешки продукти.текст$ awk 'gsub (/ Scanner /, "Router")' продукти.текст
След изпълнението на горните команди ще се получи следният изход. Има един ред, който съдържа думата „Скенер', и 'Скенер„се заменя с думата“Рутер'преди редът да бъде отпечатан.
Пример 4: Дефинирайте модел на регулярно изражение с '*'
Следващата команда 'awk' ще търси и отпечатва всеки низ, който започва с 'Mo' и включва всеки следващ символ.
$ котешки продукти.текст$ awk '/ Mo * / print $ 0' продукти.текст
След изпълнението на горните команди ще се получи следният изход. Три реда съвпадат с модела: два реда съдържат думата „Мишка„и един ред съдържа думата“Монитор'.
Пример 5: Определете модел на регулярно изражение, като използвате символа „$“
Следващата команда 'awk' ще търси и отпечатва редове във файла, които завършват с номер 5.
$ котешки продукти.текст$ awk '/ 5 $ / print $ 0' продукти.текст
След изпълнението на горните команди ще се получи следният изход. Във файла има само един ред, който завършва с номер 5.
Пример 6: Дефинирайте модел на регулярно изражение, използвайки '^' и '|' символи
"^'символът показва началото на ред, а'|'символът показва логически ИЛИ израз. Следващата команда 'awk' ще търси и отпечатва редове, които започват със знака 'стр"и съдържат или"Скенер' или 'Мишка'.
$ котешки продукти.текст$ awk '/ ^ стр.* (Скенер | Мишка) / 'продукти.текст
След изпълнението на горните команди ще се получи следният изход. Резултатът показва, че два реда съдържат думата „Мишка„и един ред съдържа думата“Скенер'. Трите реда започват с символа 'стр'.
Пример 7: Определете модел на регулярно изражение, като използвате символа „+“
"+'се използва за намиране на поне едно съвпадение. Следващата команда 'awk' ще търси и отпечатва редове, които съдържат символа 'н' поне веднъж.
$ котешки продукти.текст$ awk '/ n + / print' продукти.текст
След изпълнението на горните команди ще се получи следният изход. Тук, героят "н'съдържа се появява поне веднъж в редовете, които съдържат думите Монитор, принтер и скенер.
Пример 8: Дефинирайте модел на регулярно изражение с помощта на функцията gsub ()
Следващата команда 'awk' ще търси думата глобално 'Принтер„и го заменете с думата“Монитор' използвайки gsub () функция.
$ котешки продукти.текст$ awk 'gsub (/ Принтер /, „Монитор“) print $ 0' продукти.текст
След изпълнението на горните команди ще се получи следният изход. Четвъртият ред на файла съдържа думата „Принтер„два пъти и в изхода“Принтер„е заменен с думата“Монитор'.
Заключение
Много символи и функции могат да се използват за определяне на модели на регулярни изрази за различни задачи за търсене и замяна. Някои символи, често използвани в шаблоните на регулярни изрази, се прилагат в този урок с командата 'awk'.