sed append

Содержание
Введение
Пример
Добавить текст в конец файла
Статьи про SED

Введение

С помощью sed append можно добавлять записи в файлы

Чтобы использовать команду sed append нужна опция 'a'

Общий синтаксис выглядит так:

sed '[range] a string_to_append' file

Перевод

sed ' [диапазон] a добавляемые_символы' файл

range - это область в которой нужно делать замену. Задаётся через условие то есть является указанием шаблона или образца. Всегда должен быть внутри / /

string_to_append - это те символы, которые нужно дописать в файл

file - это имя файла (можно с путём до файла) в котором эта замена будет произведена

Пример

Рассмотрим файл sites.txt

cat sites.txt

https://eth1.ru/about/ Travel
https://eth1.ru/about/ Hotels
https://eth1.ru/about/ Hotels

Добавим после строки https://eth1.ru/about/ Hotels строку: urn.su IT

sed '/^B/ a urn.su IT' sites.txt

https://eth1.ru/about/ Travel
https://eth1.ru/about/ Hotels
urn.su IT
https://eth1.ru/about/ Hotels

append не изменяет содержание файла. Выполните снова

cat sites.txt

https://eth1.ru/about/ Travel
https://eth1.ru/about/ Hotels
https://eth1.ru/about/ Hotels

Файл не изменился

В той же самой команде замените a на i (insert - вставить)

https://eth1.ru/about/ Travel
urn.su IT
https://eth1.ru/about/ Hotels
https://eth1.ru/about/ Hotels

Теперь новая строка стала выше чем шаблон. Файл по-прежнему не меняется.

Если вы используете Ubuntu выполните

sed -n 'p' /etc/ntp.conf

И найдите там строки вида #pool 0.ubuntu.pool.ntp.org

Убедиться, что они там есть можно командой

sed -n '/ubuntu/p' /etc/ntp.conf

#pool 0.ubuntu.pool.ntp.org iburst #pool 1.ubuntu.pool.ntp.org iburst #pool 2.ubuntu.pool.ntp.org iburst #pool 3.ubuntu.pool.ntp.org iburst pool ntp.ubuntu.com

Удалить строки вида #pool 0.ubuntu.… можно командой

sed '/^#pool\s[0-9]\.ubuntu/ d' /etc/ntp.conf

Напоминаю, что \s означает один пробел

[0-9] означает одну любую цифру

Добавить текст в конец файла

Чтобы добавить текст TEXT в конец файла file воспользуйтесь командой

sed -i -e '$aTEXT' file

Изначально файл не должен быть пустым

Эта же команда в Make файле будет выглядеть так

.PHONY: addtoend addtoend: @sudo sed -i -e '$$aTEXT' file

Если нужно добавить текст после каждой строки файла выполните

sed -i -e 'aTEXT' file

Похожие статьи
SED
find + sed
p: sed print
s: sed substitute
a i d: append insert delete
Несколько команд одновременно
-e: --expression=script
d: Удаление
sed через ssh
find + sed
Групповая замена
sed в vim
Linux
Bash
Bash Scripting
AWK
GREP