- •Лабораторна робота 3
- •Базові регулярні вираження
- •Метасимволы, використовувані в регулярних вираженнях
- •Приклади регулярних виражень
- •Приклад виконання лабораторної роботи n3 Завдання 1
- •Завдання 2
- •Завдання 3
- •Варіанти індивідуальних завдань
- •Хід роботи
- •Вибрані команди Unix. Короткий опис:
- •Приклад виконання лабораторної роботи n4 Завдання 1
- •Завдання 1, варіант 1
- •Завдання 1, варіант 2
- •Завдання 1, варіант 3
- •Завдання 2
- •Завдання 2 варіант 1
- •Завдання 2, варіант 2
- •Завдання 2, варіант 3
- •Завдання 3
- •Завдання 3 варіант 1
- •Завдання 3 варіант 2
- •Варіанти індивідуальних завдань
- •Хід роботи
- •Команда awk :
- •Опис шаблонів
- •Приклад виконання лабораторної роботи n5 Приклад 1-1
- •Приклад 1-2
- •Приклад 1-3
- •Приклад 2-3.1
- •Приклад 2-3.2
- •Приклад 2-3.3
- •Приклад 2-3.4
- •Варіанти індивідуальних завдань
- •Команда sh:
- •Команда env:
- •Приклад виконання лабораторної роботи n6
- •Варіанти індивідуальних завдань
- •Хід роботи
- •Деякі приклади програмування
- •Приклад 2
- •Приклад 3
- •Варіанти індивідуальних завдань
Базові регулярні вираження
Регулярні вираження являють собою мову опису текстових шаблонів. Регулярні вираження містять зразки символів, що входять у шукане текстове вираження, і конструкції, обумовлені спеціальними символами (метасимволами).
Метасимволы, використовувані в регулярних вираженнях
|
початок рядка |
$ |
кінець рядка |
[] |
будь-який символ, укладений у квадратні дужки; щоб задати діапазон символів, у квадратних дужках вказуються через дефіс перший і останній символи діапазону |
[] |
будь-який символ, крім символів, заданих у квадратних дужках |
. |
будь-який окремий символ |
\ |
скасовує спеціальне значення наступного за ним метасимвола |
* |
указує, що попередній шаблон зустрічається 0 або більш раз |
\{n\} |
указує, що попередній шаблон зустрічається рівно n раз |
\{n,\} |
указує, що попередній шаблон зустрічається не менш n раз |
\{,n\} |
указує, що попередній шаблон зустрічається не більш n раз |
\{n,m\} |
указує, що попередній шаблон зустрічається не менш n і не більш m раз |
Приклади регулярних виражень
the |
шукаються рядки, що починаються з буквосполучення "the" |
be$ |
шукаються рядки, що закінчуються буквосполученням "be" |
[Ss]igna[ll] |
шукаються рядки, що містять буквосполучення: "signal", "Signal", "signal" або "Signal" |
\. |
шукаються рядки, що містять крапку |
...th |
шукаються рядки, що містять символи "th" в 4-й і 5-й позиціях |
.*\{53\}th |
шукаються рядки, що містять символи "th" в 54-й і 55-й позиціях |
.*\{10,30\}th |
шукаються рядки, що містять символи "th" у будь-яких позиціях між 11-й і 31-й |
.....$ |
шукаються рядки, що полягають із 5 будь-яких символів |
t.*e$ |
шукаються рядки, що починаються з букви "t", що й закінчуються буквою "e" |
[0-9][a-z] |
шукаються рядки, що містять комбінацію: цифра-прописна буква |
Приклад виконання лабораторної роботи n3 Завдання 1
У файлі query2 вибрати всі рядки, у яких в адресі є вулиця ("ST.").
Розв'язок:
Адреса у файлі query2 починається з 31-й позиції (див. структуру файлу). Тому потрібно насамперед пропустити 30 позицій від початку файлу, що можна зробити таким підвиразом: ".\{30\}" - 30 будь-яких символів від початку файлу.
Вулиця позначається в адресі скороченням "ST.", і ця підстрока може стояти в адресі на будь-якому місці, тобто перед нею можуть бути й інші символи. Оскільки загальна довжина адреси - не більш 20 символів, перед підстрокой, яку ми шукаємо, може бути не більш 17 будь-яких символів, що визначається підвиразом: ".*\{0,17\}".
Нарешті, слід указати підстрочкуу, яку ми шукаємо: "ST.". Оскільки в підстроку входить метасимвол "." (крапка), підвираз для пошуку входження буде мати вигляд: "ST\.".
Підсумкове регулярне вираження:
".\{31\}.*\{0,17\}ST\."
Протокол виконання:
Script started on Thu Sep 5 07:42:02 2002 bash2-2.05$ grep ".\{31\}.*\{0,17\}ST\." ../metod/query2 203:REBOUND SPORTS :2 E. 14TH ST. :NEW-YORK :NY:10009:5555989:10000 205:POINT GUARD :20 THURSTON ST. :YONKERS :NY:10956:5554766:3000 211:AT BAT :234 BEACHEM ST. :BROOKLINE :MA:02146:5557385:8000 212:ALL SPORT :1000 38TH ST. :BROOKLYN :NY:11210:5551739:6000 213:GOOD SPORT :400 46TH ST. :SUNNYSIDE :NY:11104:5553771:5000 214:AL'S PRO SHOP :45 SPRUCE ST. :SPRING :TX:77388:5555172:8000 223:VELO SPORTS :23 WHITE ST. :MALDEN :MA:02148:5554983:5000 228:FITNESS FIRST :5000 85TH ST. :JACKSON-HEIGHTS:NY:11372:5558710:4000 bash2-2.05$
Script done on Thu Sep 5 07:42:18 2002 |