Jak wstawić linię po dopasowaniu za pomocą `sed`?

How Insert Line After Match Using Sed



Jednym z użytecznych i potężnych poleceń Linuksa jest polecenie sed. To polecenie służy do wykonywania różnych typów zadań w systemie Linux, takich jak wstawianie, aktualizowanie i usuwanie określonego tekstu lub wiersza na podstawie dopasowania. Możesz wstawić tekst do ciągu lub pliku na różne sposoby, używając polecenia sed.

Jak wstawić linię po znalezieniu dopasowania w ciągu lub linii pokazano w tym samouczku.







Wstaw linię w String

Nowy wiersz można wstawić po dowolnej wartości ciągu za pomocą polecenia sed, jeśli wzorzec zdefiniowany w poleceniu pasuje do dowolnej części wartości ciągu.



Poniższy przykład pokazuje, jak można dodać nowy wiersz po wartości ciągu, jeśli określony ciąg istnieje w dowolnym miejscu w wartości ciągu.



Przykład-1: Wstaw linię do ciągu po znalezieniu dopasowania

Następujące polecenie wyszuka inng w ciągu, lubię programować, i wierszu tekstu, Czy lubisz programować? zostanie wstawiony po ciągu, jeśli ciąg wyszukiwania istnieje.





Tutaj znak & służy do wstawienia linii po łańcuchu.

$wyrzucił „Lubię programować”. | sed 's / inng / & Czy lubisz programować? / '

Poniższe dane wyjściowe pokazują, że ing nie istnieje w ciągu i po ciągu nie jest wstawiana żadna linia.




Następujące polecenie przeszuka. w ciągu, lubię programowanie i istnieje w ciągu.

$wyrzucił „Lubię programować”. | sed 's/ing./& Lubisz programować?/'

Poniższe dane wyjściowe pokazują, że nowy wiersz jest dodawany po ciągu.

Wstaw linię do pliku

Istnieją dwa sposoby wstawienia linii po znalezieniu dopasowania w pliku, o którym mowa poniżej. Gdy polecenie sed zostanie użyte bez opcji -i, zawartość pliku pozostanie niezmieniona, a dane wyjściowe pokażą zawartość pliku z wstawionym znakiem nowej linii. Musisz użyć opcji -i z poleceniem sed, aby wstawić nową linię na stałe do pliku, jeśli pasujący wzorzec istnieje w pliku.

A. Używanie w komendzie sed

A może być użyte we wzorcu wyszukiwania seda, aby dołączyć jeden lub więcej wierszy w pliku po wierszu, w którym pasuje wzorzec wyszukiwania lub po określonym numerze wiersza.

B. Używanie i w komendzie sed

I można użyć we wzorcu wyszukiwania polecenia sed, aby wstawić jeden lub więcej wierszy w pliku przed wierszem, w którym pasuje wzorzec wyszukiwania.

Wstaw wiersz(e) do pliku na podstawie wzorca:

Utwórz plik tekstowy rozdzielany tabulatorami o nazwie produkty.txt z następującą treścią, aby pokazać użycie powyższej flagi w poleceniu sed.

produkty.txt

Imię i nazwisko

01 Bita śmietana

02 Proszek kakaowy

03 Cukier

04 Jajko

05 Mąka

Przykład-2: Wstaw wiersz po określonym numerze wiersza za pomocą a

Poniższe polecenia pokazują, jak można dodać nowy wiersz po określonym numerze wiersza pliku products.txt, na podstawie wzorca użytego w poleceniu sed.

Tutaj pierwsze polecenie pokaże istniejącą zawartość pliku. Polecenie sed doda tekst b01 Proszek do pieczenia po pierwszych dwóch wierszach pliku. Ostatnie polecenie służy do sprawdzenia, czy zawartość pliku została zmieniona, czy nie.

$Kotprodukty.txt

$sed '2 a b01 Proszek do pieczenia'produkty.txt

$Kotprodukty.txt

Poniższe dane wyjściowe pojawią się po uruchomieniu powyższego polecenia.

Przykład-3: Wstaw wiersz po ostatnim wierszu za pomocą a

Poniższe polecenie pokazuje sposób dołączenia nowego wiersza po ostatnim wierszu pliku. Pierwsze i ostatnie polecenie pokazuje istniejącą zawartość pliku przed i po wykonaniu polecenia sed. Symbol $ jest używany we wzorcu polecenia sed, aby wspomnieć o ostatniej linii pliku.

$Kotprodukty.txt

$sed '$ a b01 Proszek do pieczenia'produkty.txt

$Kotprodukty.txt

Poniższe dane wyjściowe pojawią się po uruchomieniu powyższego polecenia.

Przykład 4: Wstaw wiersz w dowolnym miejscu pliku po dopasowaniu wzorca za pomocą a

Poniższe polecenie sed pokazuje, jak można dodać nowy wiersz w dowolnym miejscu pliku na podstawie pasującego wzorca. Wzorzec użyty w poleceniu sed przeszuka każdą linię zaczynającą się od s01 i doda po niej nowy łańcuch. Czwarta linia pliku zaczyna się od s01, a nowa linia zostanie wstawiona po tej linii.

$Kotprodukty.txt

$sed '/^s01.*/a b01 Proszek do pieczenia'produkty.txt

$Kotprodukty.txt

Po uruchomieniu polecenia pojawią się następujące dane wyjściowe.


Następujące polecenie sed przeszuka każdą linię, która kończy się na Powder i wstawi po niej nową linię. Trzecia linia pliku kończy się na Powder. Tak więc nowa linia zostanie wstawiona po tej linii.

$Kotprodukty.txt

$sed '/Proszek$/a b01 Proszek do pieczenia'produkty.txt

$Kotprodukty.txt

Poniższe dane wyjściowe pojawią się po uruchomieniu powyższych poleceń.

Przykład-5: Wstaw kilka wierszy po pasującym wzorze za pomocą a

Poniższe polecenie sed pokazuje sposób dodawania wielu wierszy w treści pliku na podstawie pasującego wzorca.

Tutaj, zgodnie ze wzorem, po trzeciej linii zostaną dodane dwie linie.

$Kotprodukty.txt

$sed '/^[a-c]/a b01 Proszek do pieczenia b02 Soda oczyszczona'produkty.txt

$Kotprodukty.txt

Poniższe dane wyjściowe pojawią się po uruchomieniu powyższych poleceń.

Przykład-6: Wstaw linię po dopasowaniu wzorca za pomocą I

$Kotprodukty.txt

$sed '/krem/i b01 Proszek do pieczenia'produkty.txt

$Kotprodukty.txt

Poniższe dane wyjściowe pojawią się po uruchomieniu powyższych poleceń.

Przykład-7: Wstaw linię na stałe po pasującym wzorcu za pomocą opcji -i

Poniższe polecenie sed pokazuje, jak trwale zmienić zawartość pliku. Opcja i jest używana z poleceniem sed do wstawienia nowej linii do pliku na podstawie wzorca.

$Kotprodukty.txt

$sed -i '/e$/g01 Ghee'produkty.txt

$Kotprodukty.txt

Poniższe dane wyjściowe pojawią się po uruchomieniu powyższych poleceń.

Wniosek:

Sposoby wstawiania dwóch lub więcej wierszy do pliku za pomocą polecenia sed ze wzorcem zostały przedstawione w tym samouczku, aby pomóc czytelnikowi zastosować to polecenie do wstawiania wierszy w tymczasowo lub na stałe na podstawie wzorca.