Шрифт:
#!/bin/sed -f
4i\
Utter confusion followed.
10.9. Изменение текста (команда с)
Команда с (change) заменяет новым текстом каждую адресуемую строку. Если выбрана группа строк, вся группа заменяется одной копией текста. Формат команды с таков:
[адрес1[,адрес2]]c\ текст\
текст\
текст
В следующем примере первая строга файла quote.txt заменяется новой строкой:
$ cat change.sed
#! /bin/sed -f
1c\
The Office Dibble band played well.
Прежде чем выполнять этот сценарий, не забудьте сделать его исполняемым:
$ chmod u+x change.sed $ change.sed quote.txt
The Office Dibble band played well. It was an evening of splendid music and company. Too bad the disco floor fell through at 23.10. The local nurse Miss P. Neave was in attendance.
Команды изменения, добавления и вставки текста можно применять к одному и тому же файлу. Ниже приведен пример такого сценария, снабженный необходимыми комментариями:
$ cat mix.sed
#! /bin/sed -f
# Изменяем строку номер 1
1c\
The Dibble band were grooving.
# Вставляем строку
/evening/i\
They played some great tunes.
# Изменяем последнюю строку
3c\
Nurse Neave was too tipsy to help.
# Добавляем строку после строки номер 3
3a\
Вот что получится в результате выполнения этого сценария:
$ mix.sed quote.txt
The Dibbse band were grooving.
They played some great tunes.
It was an evening of splendid music and company
Too bad the disco floor fell through at 23:10.
Where was the nurse to help?
Nurse Neave was too tipsy to help.
10.10. Удаление текста (команда d)
Для удаления текста предназначена команда d (delete), имеющая следующий
формат:
'адрес1[, адрес2]'d
Адрес может быть указан в виде номера строки или регулярного выражения. Рассмотрим примеры. В первом из них будет удалена первая строка входного
файла:
$ sed '1d' quote.txt
It was an evening of splendid music and company.
Too bad the disco floor fell through at 23:10.
The local nurse Miss P. Neave was in attendance.
В следующем примере удаляются строки 1—3:
$ sed '1,3d' quote.txt
The local nurse Miss P. Neave was in attendance.
В этом примере удаляется последняя строка:
$ sed '$d' quote.txt
The honeysuckle band played all night long for only $90
It was an evening of splendid music and company.
Too bad the disco floor fell through at 23:10.
Можно также удалить строку, в которой найдено совпадение с регулярным
выражением. В показанном ниже примере удаляется строка, содержащая слово '"Neave":
$ sed '/Neave/d' quote.txt
The honeysuckle band played all night long for only $90
It was an evening of splendid music and company.
Too bad the disco floor fell through at 23:10.
10.11. Замена подстроки (команда s)
Команда s (substitute) осуществляет во всех адресуемых строках замену подстроки, соответствующей заданному шаблону, указанной подстрокой. Формат команды
таков:
[адрес1[, адрес2]]s/шаблои_поиска/шаблбон_замены/[флаги]
Ниже перечислены возможные флаги:
g
Замена в адресуемой строке каждой подстроки, соответствующей шаблону (по умолчанию заменяется лишь самая первая подстрока каждой адресуемой строки)
n
Замена n–й подстроки, соответствующей шаблону (n — любое число в диапазоне от 1 до 512)
p
Вывод на экран строки, в которой была произведена замена; если в строке сделано несколько замен, она будет отображена соответствующее число раз
w имя_файла
Запись измененной строки в указанный файл
В следующем примере осуществляется замена слова "night" словом "NIGHT":
$ sed -n 's/night/NIGHT/p' quote.txt