Шпаргалка по редактору RK

       

Выполнение команд-фильтров (команда <EXEC>)


Такие полезные операции над текстами, как сортировка,

выравнивание параграфов текста, структуризация текстов программ на "Си" и другие, выполняются командами операционной системы ДЕМОС. Редактор red позволяет использовать такие команды для переработки части файла с помощью команды <EXEC>. Например, для контекстной замены int на short в очередных 10 строках файла служит команда:

<ARG>10l rpl "int" "short"<EXEC>

После этого в очередных 10 строках произойдет замена текста

int на short, которую выполнит команда ДЕМОС "rpl", написанная специально для red. Можно вызывать любые команды, которые могут использоваться как фильтр. Например:

cb - улучшение читаемости программы на Си,
sort - сортировка


Команда <EXEC> может выполняться в одном из следующих форматов:

<ARG><ч.п> <команда> <с.п.><EXEC>

либо

<ARG>-<ч.c.><команда> <с.п.><EXEC>

либо

<ARG><ч.с.>l <команда> <с.п.><EXEC>

где <ч.п.> - число параграфов,

<ч.с.> - число строк,

<с.п.> - список параметров.

Причем <число строк> или <список параметров> могут отсутствовать.


Первый (необязательный) аргумент формата определяет число строк либо параграфов за текущей строкой в файле, которые будут обрабатываться командой. Параграфы - это группы непустых строк, разделенные одной или несколькими пустыми строками. Целое неотрицательное число указывает число параграфов. если число отрицательно или за ним следует буква l -

оно указывает число строк. Если первый аргумент опущен, то имеется в виду 1 параграф текста. Таким образом, -15 или 15l задают 15 строк текста, а 2 - 2 параграфа.


Второй аргумент - имя команды операционной системы, за которым могут идти ее аргументы, разделенные пробелами. Для включения пробелов в аргумент можно использовать кавычки ".


Действие <EXEC> состоит в том, что вызывается указанная команда операционной системы с указанными параметрами. На стандартный ввод ей подаются заданные строки. Если команда выполнилась нормально, то указанные строки в файле заменяются на стандартный вывод команды. Старые строки помещаются в CLOSE-буфер.



Содержание раздела