Английская версия сайта

Использование awk и sed

Awk и Sed - это классические инструменты по обработке текста.

awk
Awk — это интерпретируемый скриптовый C-подобный язык построчного разбора и обработки входного потока (например, текстового файла) по заданным шаблонам.
sed
Sed (от англ. Stream EDitor) — это потоковый текстовый редактор (а также язык программирования), применяющий различные предопределённые текстовые преобразования к последовательному потоку текстовых данных.

Вы легко найдёте дистрибутивы этих программ для платформы Windows в сети,
а также множество описаний и руководств по их использованию.


Для примера рассмотим простейшую ситуацию. Вы работаете в СMS, предоставляюшей Web интерфейс для редактирования содержимого. Вам надо просматривать текст и выделять смысловые акценты с помощью тега <strong>. Вы решаете создать для этого пользовательскую операцию TextLab с помощью awk.

1. На первом этапе вы создаёте в каталоге UserAction каталога TextLab файл strong.awk и помещаете в него следующий awk-сценарий:

BEGIN { RS="\0" } { printf "<strong>" $0 "</strong>" } 

2. На втором этапе вы тестируете сценарий в командной строке. Для этого вы переходите в каталог, где установлен TextLab и вызываете awk с параметром -f UserAction\strong.awk.
Тестирование операции в командной строке
После этого набираете текст и водите символ конца потока Ctrl+Z. Awk выдаёт результат на экран и завершает свою работу.

Настройка пользовательских операций

3. Если результат вас удовлетворяет, осталось только подключить новую команду к TextLab. Действуем через диалог настройки пользовательских операций. Детально о процедуре подключения команды - в разделе "Настройка пользовательских операций".

Аналогичным образом вы можете настроить любые "скобочные" преобразования текста - расстановку любых других тегов (<b>...</b>, <i>...</i>), комментарии в стиле языка С или XML (/* ... */, <!- ... ->) .


Настройка пользовательских операций

Настроим операцию, которая будут удалять все существующие тэги в выделенном тексте, превращая его в простой, неразмеченный текст. Используем для этого утилиту sed и следующий файл-скрипт no-tags.sed:

:a
s/<[^>]*>//g
/</N
//ba

Проверяем скрипт в командной строке и, затем, подключаем новую операцию в TextLab как показано на изображении слева.

Аналогичным образом можно создавать операции с использованием скриптов языков PHP и Perl, технолоubb XSLT.