воскресенье, 10 февраля 2013 г.

как пользоваться -одно-строчные скрипты sed

Пример 1.3. Применение адреса.sed '1d' test.c

Так-же как и в ed, доступны адресные выражения, например:

Применение адресных выражений в sed.

В отличие от ed, sed применяет команду к каждой строке (если не указан адрес).

sed обычно выводит обработанные строки, но тут я применил команду p, которая то-же выводит строку, потому строки удваиваются.

Как видите, такой скрипт приводит к удвоению каждой строки.

printf("тестовый файл\n");

printf("тестовый файл\n");

Пример 1.2. Простейший скрипт.(файл test.c приведён выше)

К примеру рассмотрим самый просто sed-скрипт:

Вообще говоря, sed-скрипт необязательно заключать именно в одиночные кавычки, иногда его можно вообще оставить без всяких кавычек, однако, в этом случае его попытается раскрыть оболочка, что может привести к неожиданным последствиям. При этом, правильная работа скрипта будет зависеть от множества случайных причин, иногда он будет работать, иногда - нет. Более подробно этот вопрос будет рассмотрен ниже.

Предостережение

Основное отличие sed от cat заключается в том, что sed ещё и может обрабатывать текст. Для этого нужно написать особый sed-скрипт, команды в котором в большинстве своём заимствованны из вышеописанного редактора ed.

Далее sed последовательно читает все три файла, применяя к каждой строке в них sed-скрипт (пустой в данном случае). Результат выводится в выходной поток. Вот тут действие sed заканчивается, и опять начинает работать оболочка, последовательно записывая весь вывод в файл all.html. Потому код cat примитивен (пара строк на C), она просто читает входные файлы и выводит их в выходной поток, без всякой обработки, поисков и слияний. (Правда cat ещё и может нумеровать строки с ключом -n).

'' - пустой скрипт.1.html2.html3.html

Так получилось потому, что ни cat, ни sed на самом деле не объединяет файлы. Сначала действует оболочка, раскрывая *.html в отсортированный по алфавиту набор файлов, к пример, если у нас есть 3 файла 1.html, 2.html, и 3.html, то sed получит 4 параметра:

В кавычках я набрал необходимый для утилиты sed-скрипт, в данном случае пустой, потому sed никак не изменит текст. Набрав эту команду мы не увидим ничего, кроме курсора - по умолчанию sed читает входной поток с клавиатуры, и выводит его на экран (как и cat), мы можем так-же перенаправить выходной поток в файл, к примеру sed '' > dest.txt, а можем скопировать один файл в другой: sed '' src.txt > dest.txt, ну и как в случае с cat, мы можем объединять файлы: sed '' *.html > all.html.

sed-команды задаются первым параметром, наберём к примеру sed ''.

Утилита sed создана в полном соответствии с принципами UNIX-Way, и пользоваться ей можно так-же как и другими командами shell. sed ближе всего к cat, фактически это тоже самое, отличие лишь одно: cat просто копирует текст, а sed этот текст может и обрабатывать. Для обработки утилитой sed необходимо задать особые sed-команды, впрочем мы вправе никаких команд и не задавать, и тогда получим полный аналог cat (за исключением некоторых незначительных деталей).

Использование sed.Использование sed. PГлава 1. Краткий учебник про sed.P Использование sed. Как работает sed?

Комментариев нет:

Отправить комментарий