Библиотека сайта rus-linux.net
Руководство по Bash для начинающих | ||
---|---|---|
Назад | Глава 5: Потоковый редактор GNU sed | Вперед |
Неинтерактивное редактирование
Чтение команд sed из файла
Несколько команд sed можно объединить в файл и выполнить файл с использованием параметра -f
. Когда создается такой файл, убедитесь в следующем:
- в конце строк не должно быть пробелов;
- . не должны использоваться кавычки;
- когда вводится текст для добавления или замены, перед всеми символами конца строк, кроме последнего, должен добавляться обратный слеш.
Запись выходных файлов
Запись выдаваемого результата выполняется с помощью оператора перенаправления >. Ниже приведен пример скрипта, используемого для создания очень простого файла HTML из обычного текстового файла.
sandy ~> cat script.sed 1i\ <html>\ <head><title>sed generated html</title></head>\ <body bgcolor="#ffffff">\ <pre> $a\ </pre>\ </body>\ </html> sandy ~> cat txt2html.sh #!/bin/bash # This is a simple script that you can use for converting text into HTML. # First we take out all newline characters, so that the appending only happens # once, then we replace the newlines. echo "converting $1..." SCRIPT="/home/sandy/scripts/script.sed" NAME="$1" TEMPFILE="/var/tmp/sed.$PID.tmp" sed "s/\n/^M/" $1 | sed -f $SCRIPT | sed "s/^M/\n/" > $TEMPFILE mv $TEMPFILE $NAME echo "done." sandy ~>
В переменной $1
хранится первый аргумент данной команды, в данном случае это имя файла, используемого в преобразовании:
sandy ~> cat test line1 line2 line3
Подробнее о позиционных параметрах смотрите в главе 7 "Условные инструкции".
sandy ~> txt2html.sh test converting test... done. sandy ~> cat test <html> <head><title>sed generated html</title></head> <body bgcolor="#ffffff"> <pre> line1 line2 line3 </pre> </body> </html> sandy ~>
В действительности все делается не так; в данном примере лишь демонстрируются возможности редактора sed. Смотрите в разделе "Переменные Gawk" более подходящее решение этой задачи, в котором используя конструкции BEGIN и END языка awk.
Помощь в использовании sed | |
Мощные редакторы, поддерживающие подсветку синтаксиса, могут распознавать синтаксис sed. Это может для вас может быть большим подспорьем, если вы забываете указывать обратный слеш и т.п. |
Предыдущий раздел: | Оглавление | Следующий раздел: |
Интерактивное редактирование | Подводим итог главы 5 |