Поиск по сайту:

Как вставить строку после совпадения с помощью `sed`?


Одной из полезных и мощных команд Linux является команда «sed». Эта команда используется для выполнения различных типов задач в Linux, таких как вставка, обновление и удаление определенного текста или строки на основе совпадения. Вы можете по-разному вставлять текст в строку или файл с помощью команды «sed».

В этом уроке показано, как вставить строку после нахождения совпадения в строке или строке.

Вставьте строку в строку

Новая строка может быть вставлена после любого строкового значения с помощью команды «sed», если шаблон, определенный в команде, совпадает с любой частью строкового значения.

В следующем примере показано, как можно добавить новую строку после строкового значения, если конкретная строка существует в любом месте строкового значения.

Пример 1: Вставить строку в строку после нахождения совпадения

Следующая команда будет искать «inng » в строке «Мне нравится программировать» и в строке текста «Нравится ли вам программирование?» будет вставлен после строки, если искомая строка существует.

Здесь символ «&» используется для вставки строки после строки.

$ echo "I like programming." | sed 's/inng/& Do you like programming?/'

Следующий вывод показывает, что «inng» не существует в строке и после строки не вставлена строка.

Следующая команда будет искать «ing. » в строке «Мне нравится программировать », и он существует в строке.

$ echo "I like programming." | sed 's/ing./& Do you like programming?/'

Следующий вывод показывает, что новая строка добавляется после строки.

Вставить строку в файл

Есть два способа вставить строку после того, как совпадение найдено в файле, упомянутом ниже. Когда команда «sed» используется без параметра «-i», содержимое файла останется неизменным, а на выходе будет отображаться содержимое файла со вставленной новой строкой. Вы должны использовать параметр «-i» с командой «sed», чтобы постоянно вставлять новую строку в файл, если в файле существует соответствующий шаблон.

А. Использование «a» в команде «sed»

«a» может использоваться в шаблоне поиска «sed» для добавления одной или нескольких строк в файле после строки, в которой шаблон поиска совпадает, или после определенного номера строки.

Б. Использование «i» в команде «sed»

«i» можно использовать в шаблоне поиска команды «sed», чтобы вставить одну или несколько строк в файл перед строкой, в которой шаблон поиска совпадает.

Вставьте строки в файл на основе шаблона:

Создайте текстовый файл с разделителями табуляции с именем  products.txt со следующим содержимым, чтобы показать использование вышеуказанного флага в команде «sed».

products.txt

ID        Name

01        Whip cream

02        Cocoa Powder

03        Sugar

04        Egg

05        Flour

Пример 2: Вставьте строку после определенного номера строки, используя «a»

Следующие команды показывают, как можно добавить новую строку после определенного номера строки файла products.txt на основе шаблона, используемого в команде «sed».

Здесь первая команда покажет существующее содержимое файла. Команда «sed» добавит текст «b01 Разрыхлитель» после первых двух строк файла. Последняя команда используется для проверки того, изменилось ли содержимое файла.

$ cat products.txt

$ sed '2 a b01\tBaking powder' products.txt

$ cat products.txt

Следующий вывод появится после выполнения вышеуказанной команды.

Пример 3: Вставьте строку после последней строки, используя «a»

Следующая команда показывает, как добавить новую строку после последней строки файла. Первая и последняя команды показывают существующее содержимое файла до и после выполнения команды «sed». Символ «$» используется в шаблоне команды «sed» для обозначения последней строки файла.

$ cat products.txt

$ sed '$ a b01\tBaking powder' products.txt

$ cat products.txt

Следующий вывод появится после выполнения вышеуказанной команды.

Пример 4. Вставьте строку в любом месте файла после сопоставления шаблона с помощью «a».

Следующая команда «sed» показывает, как можно добавить новую строку в любом месте файла на основе соответствующего шаблона. Шаблон, используемый в команде «sed», будет искать любую строку, начинающуюся с «s01», и добавлять после нее новую строку. Четвертая строка файла начинается с «s01», и новая строка будет вставлена после этой строки.

$ cat products.txt

$ sed '/^s01.*/a b01\tBaking Powder' products.txt

$ cat products.txt

Следующий вывод появится после запуска команды.

Следующая команда «sed» будет искать любую строку, которая заканчивается на «Powder», и вставлять после нее новую строку. Третья строка файла заканчивается на «Порошок». Таким образом, новая строка будет вставлена после этой строки.

$ cat products.txt

$ sed '/Powder$/a b01\tBaking Powder' products.txt

$ cat products.txt

Следующий вывод появится после выполнения вышеуказанных команд.

Пример 5: Вставьте несколько строк после совпадающего шаблона, используя «a»

Следующая команда «sed» показывает способ добавления нескольких строк в содержимое файла на основе совпадающего шаблона.

Здесь две строки будут добавлены после третьей строки, согласно шаблону.

$ cat products.txt

$ sed '/^[a-c]/a b01\tBaking Powder\nb02\tBaking Soda' products.txt

$ cat products.txt

Следующий вывод появится после выполнения вышеуказанных команд.

Пример 6: Вставьте строку после сопоставления шаблона с помощью «I»

$ cat products.txt

$ sed '/cream/i b01\tBaking Powder' products.txt

$ cat products.txt

Пример 7: постоянно вставляйте строку после соответствующего шаблона с помощью параметра «-i».

Следующая команда «sed» показывает, как навсегда изменить содержимое файла. Параметр «i» используется с командой «sed» для вставки новой строки в файл на основе шаблона.

$ cat products.txt

$ sed -i '/e$/a g01\tGhee' products.txt

$ cat products.txt

Следующий вывод появится после выполнения вышеуказанных команд.

Заключение:

В этом руководстве были показаны способы вставки двух или более строк в файл с помощью команды «sed» с шаблоном, чтобы помочь читателю применить эту команду для временной или постоянной вставки строк на основе шаблона.

Статьи по данной тематике: