Cum se introduce o linie după meci folosind `sed`?

How Insert Line After Match Using Sed



Una dintre comenzile utile și puternice ale Linux este comanda sed. Această comandă este utilizată pentru a efectua diferite tipuri de activități în Linux, cum ar fi inserarea, actualizarea și ștergerea unui anumit text sau linie pe baza potrivirii. Puteți insera un text într-un șir sau într-un fișier în moduri diferite utilizând comanda sed.

Cum se introduce o linie după ce ați găsit o potrivire într-un șir sau o linie este prezentat în acest tutorial.







Introduceți o linie în șir

O nouă linie poate fi inserată după orice valoare de șir utilizând comanda sed dacă modelul definit în comandă se potrivește cu orice parte a valorii șirului.



Următorul exemplu arată cum poate fi adăugată o nouă linie după o valoare șir dacă un anumit șir există oriunde în valoarea șirului.



Exemplu-1: introduceți o linie într-un șir după ce ați găsit o potrivire

Următoarea comandă va căuta intrarea în șir, îmi place programarea și o linie de text, Îți place programarea? va fi inserat după șir dacă există șirul de căutare.





Aici, caracterul & este folosit pentru a insera linia după șir.

$aruncat „Îmi place să programez”. | sed 's / inng / & Îți place programarea? /'

Următoarea ieșire arată că inng nu există în șir și nu se introduce nicio linie după șir.




Următoarea comandă va căuta ing. în șir, îmi place programarea și există în șir.

$aruncat „Îmi place să programez”. | sed 's / ing ./& Îți place programarea? /'

Următoarea ieșire arată că noua linie este adăugată după șir.

Introduceți o linie într-un fișier

Există două moduri de a insera o linie după ce o potrivire este găsită într-un fișier menționat mai jos. Când comanda sed este utilizată fără opțiunea -i, atunci conținutul fișierului va rămâne neschimbat, iar rezultatul va afișa conținutul fișierului cu linia nouă introdusă. Trebuie să utilizați opțiunea -i cu comanda sed pentru a insera noua linie permanent în fișier dacă modelul de potrivire există în fișier.

A. Folosind un în comanda sed

A poate fi utilizat în modelul de căutare al sedului pentru a adăuga una sau mai multe linii într-un fișier după linia în care modelul de căutare se potrivește sau după un anumit număr de linie.

B. Folosind i în comanda sed

I poate fi folosit în modelul de căutare al comenzii sed pentru a insera una sau mai multe linii într-un fișier înainte de linia în care se potrivește modelul de căutare.

Inserați linie (e) într-un fișier pe baza modelului:

Creați un fișier text delimitat de tab-uri numit products.txt cu următorul conținut pentru a afișa utilizările steagului de mai sus în comanda sed.

products.txt

Nume ID

01 Frisca

02 Pudră de cacao

03 Zahar

04 ou

05 Făină

Exemplul-2: introduceți o linie după un anumit număr de linie folosind a

Următoarele comenzi arată cum poate fi adăugată o nouă linie, după un anumit număr de linie al fișierului products.txt, pe baza modelului utilizat în comanda sed.

Aici, prima comandă va afișa conținutul existent al fișierului. Comanda sed va adăuga textul, b01 Praful de copt, după primele două linii ale fișierului. Ultima comandă este utilizată pentru a verifica dacă conținutul fișierului este modificat sau nu.

$pisicăproducts.txt

$sed „2 a b01 tPraf de copt”products.txt

$pisicăproducts.txt

Următoarea ieșire va apărea după executarea comenzii de mai sus.

Exemplul-3: Introduceți o linie după ultima linie folosind a

Următoarea comandă arată modul de a adăuga o nouă linie după ultima linie a fișierului. Prima și ultima comandă arată conținutul existent al fișierului înainte și după executarea comenzii sed. Simbolul $ este utilizat în modelul comenzii sed pentru a menționa ultima linie a fișierului.

$pisicăproducts.txt

$sed „$ a b01 tPraf de copt”products.txt

$pisicăproducts.txt

Următoarea ieșire va apărea după executarea comenzii de mai sus.

Exemplu-4: Introduceți o linie oriunde în fișier după potrivirea unui model folosind a

Următoarea comandă sed arată cum poate fi adăugată o nouă linie oriunde în fișier pe baza modelului de potrivire. Modelul utilizat în comanda sed va căuta orice linie începând cu s01 și va adăuga noul șir după acesta. A patra linie a fișierului începe cu s01, iar noua linie va fi inserată după acea linie.

$pisicăproducts.txt

$sed „/^s01.*/a b01 tPraf de copt”products.txt

$pisicăproducts.txt

Următoarea ieșire va apărea după executarea comenzii.


Următoarea comandă sed va căuta orice linie care se termină cu Powder și va introduce noua linie după aceasta. A treia linie a fișierului se termină cu Powder. Deci, noua linie va fi inserată după acea linie.

$pisicăproducts.txt

$sed „/ Powder $ / a b01 tPraf de copt”products.txt

$pisicăproducts.txt

Următoarea ieșire va apărea după executarea comenzilor de mai sus.

Exemplul-5: Introduceți mai multe linii după modelul de potrivire folosind un

Următoarea comandă sed arată modul de a adăuga mai multe linii în conținutul unui fișier pe baza modelului de potrivire.

Aici, două linii vor fi adăugate după a treia linie, conform modelului.

$pisicăproducts.txt

$sed '/ ^ [a-c] / a b01 tPraf de copt nb02 tSod de sodiu'products.txt

$pisicăproducts.txt

Următoarea ieșire va apărea după executarea comenzilor de mai sus.

Exemplu-6: Introduceți o linie după potrivirea unui model folosind I

$pisicăproducts.txt

$sed „/ cream / i b01 tPraf de copt”products.txt

$pisicăproducts.txt

Următoarea ieșire va apărea după executarea comenzilor de mai sus.

Exemplu-7: introduceți o linie permanent după modelul de potrivire utilizând opțiunea -i

Următoarea comandă sed arată cum să schimbați permanent conținutul fișierului. Opțiunea i este utilizată cu comanda sed pentru a insera o nouă linie în fișier pe baza modelului.

$pisicăproducts.txt

$sed -i „/ e $ / a g01 tGhee”products.txt

$pisicăproducts.txt

Următoarea ieșire va apărea după executarea comenzilor de mai sus.

Concluzie:

Modurile de inserare a două sau mai multe linii într-un fișier utilizând comanda sed cu model au fost prezentate în acest tutorial pentru a ajuta cititorul să aplice această comandă pentru inserarea liniilor temporar sau permanent pe baza modelului.