- •1.Формальнi мови
- •2.Регулярні мови і регулярні вирази.
- •3.Формальні породжувальні граматики.Типи граматик.
- •4.Автомати Мілі та автомати Мура.Типи автоматів. Способи задання автоматів.
- •6. Недетерміновані скінченні автомати без виходу.Алгоритми синтезу нса.
- •7. Скінченні автомати та регулярні мови. Зв’язок прямолінійних граматик з скінченними автоматами. Існування нерегулярних мов. Лема про роздування.
- •8. Застосування регулярних виразів для конкретного пошуку тексту. Програма grep.Опис, опції, приклад.
- •Розширені регулярні вирази. Метасимволи початку, кінця рядка та довільного символу. Вибір, пошук рядків, які містять декілька регулярних виразів.
- •Квантифікатори (повторювачі). Визначення інтервалів та кількості екземплярів.
- •Символьні класи. Інвертовані символьні класи. Стандартні символьні класи. Приклади використання.
- •12. Групи та зворотні посилання. Приклади використання.
- •Застосування регулярних виразів для обробки тексту. Потоковий текстовий редактор sed. Опис опцій, адресація приклади.
- •Функції редактора sed. Функція контекстної заміни тексту.
- •Функція видалення d, друк p та вставки нових рядків a,c,I. Стирання: d
- •Інверсне обмеження: !
- •Співвідношення між d, p та !
- •Функція транслітерації та шифрування тексту. Приклади використання функції обміну інформацією між робочим та допоміжним буферами.
- •Цикл выполнения
- •Регулярні вирази в програмних продуктах LibreOffice та TotalCommander.
- •Приклад 1
- •Арифметичні та алгебраїчні обчислення в системі Mathematica: арифметичні операції, основні елементарні функції, перетворення алгебраїчних виразів, правила заміни.
- •Операції математичного аналізу в системі Mathematica: знаходження похідних, інтегралів, сум, добутків розв’язування рівнянь.
- •Функції в системі Mathematica. Використання вбудованих функції,означення власних функції користувача та їх використання.
Функція видалення d, друк p та вставки нових рядків a,c,I. Стирання: d
Використання діапазонів буває плутаним, тому вам можливо доведеться зробити кілька експериментів під час випробовування нового сценарію. Корисною командою для цього є «d», яка вилучає кожний рядок, який збігається з обмеженням (або адресами). Якщо ви хочете подивитися на перші 10 рядків файла, то можете ввести
sed '11,$ d' file
що тотожно команді head. Якщо ви хочете відтяти заголовок електронного листа, що відповідає усьому аж до першого порожнього рядка, то введіть
sed '1,/^$/ d' file
Знаючи довжину файла, можна повторити дію команди tail. wc може порахувати рядки, a expr – відняти 10 від числа рядків. Сценарій оболонки Борна для виводу останніх 10-и рядків файла міг би виглядати так:
#!/bin/sh
#print last 10 lines of file
# First argument is the filename
lines=`wc -l $1 | awk '{print $1}' `
start=`expr $lines - 10`
sed "1,$start d" $1
Діапазон видалення може складатися з пари регулярних виразів для позначення початку і кінця операції. Або це може бути один регулярний вираз. Прибрати всі рядки, які починаються з «#» – легко:
sed '/^#/ d'
Усунення коментарів і порожніх рядків вимагає двох команд. Перша видаляє кожний символ від «#» до кінця рядка, а друга – усі порожні рядки:
sed -e 's/#.*//' -e '/^$/ d'
Третю слід додати, щоб прибрати всі пробіли і табуляцію перед самим кінцем рядка:
sed -e 's/#.*//' -e 's/[ ^I]*$//' -e '/^$/ d'
Символ «^I» – це CRTL-I або символ табуляції. Вам слід або безпосередньо ввести символ табуляції (CRTL-V а потім TAB на командному рядку, просто TAB, або CTRL-I, або CRTL-V а потім TAB в редакторі), або вказати його як «\t». Зверніть па порядок дій, який не є випадковим. Коментарі можуть починатися посеред рядка, маючи пробіли або табуляцію перед ними. Тому, спочатку видаляються коментарі, що може залишити пробілові знаки, які знаходяться перед коментарями. Друга команда прибирає всі хвостові пробіли і табуляцію, тож рядки, які містили тільки їх стають порожніми рядками. Остання команда усуває порожні рядки.
Останній приклад служить хорошою ілюстрацією простору дії шаблонів (або просто простору шаблону), який використовуєsed для оперування над рядком. Дійсними операціями sed є:
Копіювання рядка вводу у простір дії шаблонів.
Застосування першої команди sed до простору дії шаблонів, якщо обмеження адреси має істинне значення.
Повторення тієї самої дії з другою командою, знову застосувавши її до (можливо вже зміненого першою командою) простору дії шаблонів.
Виконання останньої команди, вивід простору дії шаблонів і зчитування наступного рядка файла вводу.
Наскільки я зрозумів, простір дії шаблонів (англійською просто pattern space) – це свого роду тимчасовий буфер, у якому зберігається зчитаний рядок вводу. Якщо адреса рядка не суперечить обмеженням, тоді виконується кожна команда по-черзі, змінюючи в процесі цей тимчасовий буфер. Далі з'явиться так званийбуфер зберігання (англійською hold space або hold buffer), який дозволяє зберегти модифікований рядок, знайдений у буфері простору дії шаблонів, з можливістю пізнішого його видобуття і копіювання в поточний /простір дії шаблонів/.
Треба перевірити, чи правильно я зрозумів. [В.Ц.]
Вивід: p
Іншою цінною командою є команда виводу: «p». Якщо sed не викликано з ключем «-n», тоді «p» подвоює вивід. Команда
sed 'p'
виводить двічі кожний рядок. Якщо ви хочете подвоїти кожний порожній рядок, то вкажіть
sed '/^$/ p'
Додання ключа «-n» скасовує вивід, доки ви явно не вкажете його. Іншим способом повторення функціональності програми head є - вивести тільки ті рядки, які ви хочете. Наступний приклад виводить перших 10 рядків
sed -n '1,10 p' file
sed може працювати як grep, якщо вказати оператор виводу для всіх рядків, які збігаються з регулярним виразом:
sed -n '/шаблон/ p'
що - тотожно
grep шаблон
Тут «p» названо оператором. Розібратися в термінології. Оператори, чи команди. [В.Ц.]