Како уметнути линију након подударања помоћу `сед`?

How Insert Line After Match Using Sed



Једна од корисних и моћних команди Линука је сед команда. Ова команда се користи за извршавање различитих врста задатака у Линуку, као што је уметање, ажурирање и брисање одређеног текста или реда на основу подударања. Можете убацити текст у низ или датотеку на различите начине помоћу наредбе сед.

У овом водичу приказано је како уметнути ред након проналаска подударања у низу или линији.







Уметните ред у низ

Нови ред се може уметнути после било које вредности низа помоћу команде сед ако се образац дефинисан у команди подудара са било којим делом вредности низа.



Следећи пример показује како се нови ред може додати након вредности низа ако одређени низ постоји било где у вредности низа.



Пример-1: Уметните ред у низ након што пронађете подударање

Следећа команда ће тражити иннг у низу, волим програмирање и ред текста. Да ли вам се свиђа програмирање? ће бити уметнута после низа ако стринг за претрагу постоји.





Овде се знак & користи за уметање реда после низа.

$Избацио 'Волим програмирање.' | сед 'с / иннг / & Да ли волиш програмирање? /'

Следећи излаз показује да иннг не постоји у низу и да се након низа не убацује ниједан ред.




Следећа команда ће претраживати инг. у низу, волим програмирање и постоји у низу.

$Избацио 'Волим програмирање.' | сед 'с/инг ./& Да ли волиш програмирање?/'

Следећи излаз показује да је нова линија додата након низа.

Уметните ред у датотеку

Постоје два начина за уметање линије након што се пронађе подударање у датотеци која је доле наведена. Када се наредба сед користи без опције -и, садржај датотеке ће остати непромењен, а излаз ће приказати садржај датотеке са уметнутим новим редом. Морате користити опцију -и са наредбом сед да бисте трајно уметнули нову линију у датотеку ако у датотеци постоји одговарајући образац.

А. Употреба а у команди сед

А се може користити у обрасцу претраживања сед -а за додавање једног или више редова у датотеку након линије у којој се узорак претраживања подудара или након одређеног броја ретка.

Б. Коришћењем и у наредби сед

И се може користити у обрасцу претраживања сед команде за уметање једног или више редова у датотеку пре линије у којој се шаблон за претраживање подудара.

Уметните редове у датотеку на основу обрасца:

Направите текстуалну датотеку са табулаторима и под називом продуцтс.ткт са следећим садржајем за приказивање употребе горње заставице у наредби сед.

продуцтс.ткт

ИД Наме

01 Шлаг

02 Какао у праху

03 Шећер

04 Јаје

05 Брашно

Пример-2: Уметните ред иза одређеног броја ретка помоћу а

Следеће команде показују како се може додати нова линија, након одређеног броја реда датотеке продуцтс.ткт, на основу обрасца који се користи у наредби сед.

Овде ће прва команда приказати постојећи садржај датотеке. Команда сед ће додати текст, б01 Прашак за пециво, после прва два реда датотеке. Последња команда се користи за проверу да ли се садржај датотеке променио или не.

$мачкапродуцтс.ткт

$сед '2 а б01 тПерх за пециво'продуцтс.ткт

$мачкапродуцтс.ткт

Следећи излаз ће се појавити након покретања горње команде.

Пример-3: Уметните ред после последњег ретка помоћу а

Следећа команда приказује начин додавања нове линије после последње линије датотеке. Прва и последња команда приказује постојећи садржај датотеке пре и после извршавања наредбе сед. Симбол $ се користи у обрасцу сед команде за помињање последње линије датотеке.

$мачкапродуцтс.ткт

$сед '$ а б01 тПерх за пециво'продуцтс.ткт

$мачкапродуцтс.ткт

Следећи излаз ће се појавити након покретања горње команде.

Пример-4: Уметните ред било где у датотеци након подударања узорка помоћу а

Следећа команда сед приказује како се нова линија може додати било где у датотеци на основу одговарајућег обрасца. Узорак који се користи у наредби сед претраживаће сваку линију која почиње са с01 и додаће нови низ након ње. Четврти ред датотеке почиње са с01, а нови ред ће бити уметнут након тог реда.

$мачкапродуцтс.ткт

$сед '/^с01.*/а б01 тПешак у праху'продуцтс.ткт

$мачкапродуцтс.ткт

Следећи излаз ће се појавити након покретања наредбе.


Следећа команда сед ће претраживати сваки ред који се завршава прашком и уметнути нови ред иза њега. Трећи ред датотеке завршава се са прахом. Дакле, нова линија ће бити уметнута након те линије.

$мачкапродуцтс.ткт

$сед '/Пудер $/а б01 тПерх у праху'продуцтс.ткт

$мачкапродуцтс.ткт

Следећи излаз ће се појавити након покретања горњих команди.

Пример-5: Уметните више редова након одговарајућег обрасца помоћу а

Следећа команда сед приказује начин додавања више редова у садржај датотеке на основу одговарајућег обрасца.

Овде ће се додати две линије након треће линије, према обрасцу.

$мачкапродуцтс.ткт

$сед '/^[а-ц]/а б01 т Прашак за пециво нб02 тСода бикарбона'продуцтс.ткт

$мачкапродуцтс.ткт

Следећи излаз ће се појавити након покретања горњих команди.

Пример-6: Уметните линију након подударања узорка помоћу слова И

$мачкапродуцтс.ткт

$сед '/цреам/и б01 тПерх у праху'продуцтс.ткт

$мачкапродуцтс.ткт

Следећи излаз ће се појавити након покретања горњих команди.

Пример -7: Уметните ред трајно након одговарајућег обрасца помоћу опције -и

Следећа команда сед показује како трајно променити садржај датотеке. Опција и се користи са наредбом сед за уметање нове линије у датотеку на основу обрасца.

$мачкапродуцтс.ткт

$сед '/е $/а г01 тГи'продуцтс.ткт

$мачкапродуцтс.ткт

Следећи излаз ће се појавити након покретања горњих команди.

Закључак:

Начини уметања два или више редова у датотеку помоћу наредбе сед са шаблоном приказани су у овом водичу како би помогли читаоцу да примени ову команду за уметање редова у привремено или трајно на основу обрасца.