Как вставить строку после совпадения с помощью `sed`?
Одной из полезных и мощных команд Linux является команда «sed». Эта команда используется для выполнения различных типов задач в Linux, таких как вставка, обновление и удаление определенного текста или строки на основе совпадения. Вы можете по-разному вставлять текст в строку или файл с помощью команды «sed».
В этом уроке показано, как вставить строку после нахождения совпадения в строке или строке.
Вставьте строку в строку
Новая строка может быть вставлена после любого строкового значения с помощью команды «sed», если шаблон, определенный в команде, совпадает с любой частью строкового значения.
В следующем примере показано, как можно добавить новую строку после строкового значения, если конкретная строка существует в любом месте строкового значения.
Пример 1: Вставить строку в строку после нахождения совпадения
Следующая команда будет искать «inng » в строке «Мне нравится программировать» и в строке текста «Нравится ли вам программирование?» будет вставлен после строки, если искомая строка существует.
Здесь символ «&» используется для вставки строки после строки.
Следующий вывод показывает, что «inng» не существует в строке и после строки не вставлена строка.
Следующая команда будет искать «ing. » в строке «Мне нравится программировать », и он существует в строке.
Следующий вывод показывает, что новая строка добавляется после строки.
Вставить строку в файл
Есть два способа вставить строку после того, как совпадение найдено в файле, упомянутом ниже. Когда команда «sed» используется без параметра «-i», содержимое файла останется неизменным, а на выходе будет отображаться содержимое файла со вставленной новой строкой. Вы должны использовать параметр «-i» с командой «sed», чтобы постоянно вставлять новую строку в файл, если в файле существует соответствующий шаблон.
А. Использование «a» в команде «sed»
«a» может использоваться в шаблоне поиска «sed» для добавления одной или нескольких строк в файле после строки, в которой шаблон поиска совпадает, или после определенного номера строки.
Б. Использование «i» в команде «sed»
«i» можно использовать в шаблоне поиска команды «sed», чтобы вставить одну или несколько строк в файл перед строкой, в которой шаблон поиска совпадает.
Вставьте строки в файл на основе шаблона:
Создайте текстовый файл с разделителями табуляции с именем products.txt со следующим содержимым, чтобы показать использование вышеуказанного флага в команде «sed».
products.txt
01 Whip cream
02 Cocoa Powder
03 Sugar
04 Egg
05 Flour
Пример 2: Вставьте строку после определенного номера строки, используя «a»
Следующие команды показывают, как можно добавить новую строку после определенного номера строки файла products.txt на основе шаблона, используемого в команде «sed».
Здесь первая команда покажет существующее содержимое файла. Команда «sed» добавит текст «b01 Разрыхлитель» после первых двух строк файла. Последняя команда используется для проверки того, изменилось ли содержимое файла.
$ sed '2 a b01\tBaking powder' products.txt
$ cat products.txt
Следующий вывод появится после выполнения вышеуказанной команды.
Пример 3: Вставьте строку после последней строки, используя «a»
Следующая команда показывает, как добавить новую строку после последней строки файла. Первая и последняя команды показывают существующее содержимое файла до и после выполнения команды «sed». Символ «$» используется в шаблоне команды «sed» для обозначения последней строки файла.
$ sed '$ a b01\tBaking powder' products.txt
$ cat products.txt
Следующий вывод появится после выполнения вышеуказанной команды.
Пример 4. Вставьте строку в любом месте файла после сопоставления шаблона с помощью «a».
Следующая команда «sed» показывает, как можно добавить новую строку в любом месте файла на основе соответствующего шаблона. Шаблон, используемый в команде «sed», будет искать любую строку, начинающуюся с «s01», и добавлять после нее новую строку. Четвертая строка файла начинается с «s01», и новая строка будет вставлена после этой строки.
$ sed '/^s01.*/a b01\tBaking Powder' products.txt
$ cat products.txt
Следующий вывод появится после запуска команды.
Следующая команда «sed» будет искать любую строку, которая заканчивается на «Powder», и вставлять после нее новую строку. Третья строка файла заканчивается на «Порошок». Таким образом, новая строка будет вставлена после этой строки.
$ sed '/Powder$/a b01\tBaking Powder' products.txt
$ cat products.txt
Следующий вывод появится после выполнения вышеуказанных команд.
Пример 5: Вставьте несколько строк после совпадающего шаблона, используя «a»
Следующая команда «sed» показывает способ добавления нескольких строк в содержимое файла на основе совпадающего шаблона.
Здесь две строки будут добавлены после третьей строки, согласно шаблону.
$ sed '/^[a-c]/a b01\tBaking Powder\nb02\tBaking Soda' products.txt
$ cat products.txt
Следующий вывод появится после выполнения вышеуказанных команд.
Пример 6: Вставьте строку после сопоставления шаблона с помощью «I»
$ sed '/cream/i b01\tBaking Powder' products.txt
$ cat products.txt
Пример 7: постоянно вставляйте строку после соответствующего шаблона с помощью параметра «-i».
Следующая команда «sed» показывает, как навсегда изменить содержимое файла. Параметр «i» используется с командой «sed» для вставки новой строки в файл на основе шаблона.
$ sed -i '/e$/a g01\tGhee' products.txt
$ cat products.txt
Следующий вывод появится после выполнения вышеуказанных команд.
Заключение:
В этом руководстве были показаны способы вставки двух или более строк в файл с помощью команды «sed» с шаблоном, чтобы помочь читателю применить эту команду для временной или постоянной вставки строк на основе шаблона.