sed append

Contents
Введение
Пример
Добавить текст в конец файла
Статьи про 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

Авиасейлз Travel
Booking.com Hotels
Hotellook Hotels

Добавим после строки Booking.com Hotels строку: eth1.ru IT

sed '/^B/ a eth1.ru IT' sites.txt

Авиасейлз Travel
Booking.com Hotels
eth1.ru IT
Hotellook Hotels

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

cat sites.txt

Авиасейлз Travel
Booking.com Hotels
Hotellook Hotels

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

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

Авиасейлз Travel
eth1.ru IT
Booking.com Hotels
Hotellook 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

Related Articles
SED
find + sed
p: sed print
s: sed substitute
a i: append insert
Multiple commands
-e: --expression=script
d: Delete
sed via ssh
find + sed
Sustitution grouping
sed in vim
Linux
Bash
Bash Scripting
AWK
GREP

Search on this site

Subscribe to @aofeed channel for updates

Visit Channel

@aofeed

Feedback and Questions in Telegram

@aofeedchat