Рейтинг@Mail.ru
[Войти] [Зарегистрироваться]

Наши друзья и партнеры

UnixForum
Беспроводные выключатели nooLite

Lines Club

Ищем достойных соперников.

Книги по Linux (с отзывами читателей)

Библиотека сайта или "Мой Linux Documentation Project"

На главную -> MyLDP -> Электронные книги по ОС Linux
Руководство по 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


Эта статья еще не оценивалась
Вы сможете оценить статью и оставить комментарий, если войдете или зарегистрируетесь.
Только зарегистрированные пользователи могут оценивать и комментировать статьи.

Комментарии отсутствуют