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

How Insert Line After Match Using Sed



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

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







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

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



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



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

Следующая команда выполнит поиск в строке I like programming и строке текста Do you like programming? будет вставлен после строки, если строка поиска существует.





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

$выбросил «Я люблю программировать». | sed 's / inng / & Нравится ли вам программировать? /'

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




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

$выбросил «Я люблю программировать». | sed 's / ing ./& Любишь программировать? /'

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

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

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

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

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

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

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

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

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

products.txt

ID Имя

01 Взбитые сливки

02 Какао-порошок

03 Сахар

04 Яйцо

05 Мука

Пример-2: Вставьте строку после определенного номера строки с помощью символа a

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

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

$Котproducts.txt

$sed '2 a b01 t Разрыхлитель'products.txt

$Котproducts.txt

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

Пример-3: Вставьте строку после последней строки с помощью символа a

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

$Котproducts.txt

$sed '$ a b01 t Разрыхлитель'products.txt

$Котproducts.txt

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

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

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

$Котproducts.txt

$sed '/^s01.*/a b01 t Разрыхлитель'products.txt

$Котproducts.txt

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


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

$Котproducts.txt

$sed '/ Порошок $ / a b01 t Разрыхлитель'products.txt

$Котproducts.txt

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

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

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

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

$Котproducts.txt

$sed '/ ^ [a-c] / a b01 tПорошок для выпечки nb02 tПищевая сода'products.txt

$Котproducts.txt

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

Пример-6: Вставьте строку после сопоставления с шаблоном, используя I

$Котproducts.txt

$sed '/ cream / i b01 t Разрыхлитель'products.txt

$Котproducts.txt

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

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

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

$Котproducts.txt

$sed '/ e $ / a g01 tGhee'products.txt

$Котproducts.txt

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

Заключение:

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