Jednym z przydatnych i potężnych poleceń systemu Linux jest polecenie „sed”ed. 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 znaków 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ć nową linię 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ę programowanie” i wiersz tekstu „Czy lubisz programować?” zostanie wstawiony po ciągu, jeśli ciąg wyszukiwania istnieje.
Tutaj znak „&” służy do wstawiania linii po łańcuchu.
$ echo "Lubię programować." | sed's/inng/& Czy lubisz programować?/'Poniższe dane wyjściowe pokazują, że „inng” nie istnieje w ciągu i nie jest wstawiana żadna linia po ciągu.
Następujące polecenie wyszuka „ing.” w ciągu, „Lubię programowanie” i istnieje w ciągu.
Poniższe dane wyjściowe pokazują, że nowa linia jest dodawana po łańcuchu.
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 na stałe wstawić nową linię do pliku, jeśli pasujący wzorzec istnieje w pliku.
ZA. Używanie „a” w poleceniu „sed”
„a” można użyć we wzorcu wyszukiwania „sed”, aby dodać 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 poleceniu „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.tekst z następującą treścią, aby pokazać użycie powyższej flagi w poleceniu „sed”.
produkty.tekst
ID Nazwa01 Ubijaj śmietanę
02 Proszek kakaowy
03 Cukier
04 Jajko
05 Mąka
Przykład-2: Wstaw wiersz po określonym numerze wiersza, używając „a”
Poniższe polecenia pokazują, jak można dodać nową linię po określonym numerze linii produktów.plik txt, oparty na wzorcu użytym 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.
$ produkty dla kotów.tekst$ sed '2 a b01\tProszek do pieczenia' produktów.tekst
$ produkty dla kotów.tekst
Następujące dane wyjściowe pojawią się po uruchomieniu powyższego polecenia.
Przykład-3: Wstaw wiersz po ostatnim wierszu, używając „a”
Poniższe polecenie pokazuje sposób dodawania nowej linii po ostatniej linii 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.
$ produkty dla kotów.tekst$ sed '$ a b01\tProszek do pieczenia' produktów.tekst
$ produkty dla kotów.tekst
Następujące 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ć nową linię w dowolnym miejscu pliku w oparciu o pasujący wzorzec. Wzorzec użyty w poleceniu „sed” przeszuka każdą linię zaczynającą się od „s01” i doda po niej nowy ciąg. Czwarta linia pliku zaczyna się od „s01”, a nowa linia zostanie wstawiona po tej linii.
$ produkty dla kotów.tekst$ sed '/^s01.*/a b01\tProszek do pieczenia'Produkty.tekst
$ produkty dla kotów.tekst
Następujące dane wyjściowe pojawią się po uruchomieniu polecenia.
Następujące polecenie „sed” przeszuka każdą linię, która kończy się na „Proszek” i wstawi po niej nową linię. Trzecia linia pliku kończy się na „Powder”. Tak więc nowa linia zostanie wstawiona po tej linii.
$ sed '/Proszek$/a b01\tProszek do pieczenia' produkty.tekst
$ produkty dla kotów.tekst
Następujące dane wyjściowe pojawią się po uruchomieniu powyższych poleceń.
Przykład-5: Wstaw kilka wierszy po pasującym wzorze, używając „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 trzecim wierszu zostaną dodane dwie linie.
$ produkty dla kotów.tekst$ sed '/^[a-c]/a b01\tProszek do pieczenia\nb02\tSoda oczyszczona' produkty.tekst
$ produkty dla kotów.tekst
Następujące dane wyjściowe pojawią się po uruchomieniu powyższych poleceń.
Przykład-6: Wstaw linię po dopasowaniu wzoru za pomocą „I”
$ produkty dla kotów.tekst$ sed '/cream/i b01\tProszek do pieczenia' produkty.tekst
$ produkty dla kotów.tekst
Następujące dane wyjściowe pojawią się po uruchomieniu powyższych poleceń.
Przykład-7: Wstaw linię na stałe po dopasowanym wzorze, używając 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.
$ produkty dla kotów.tekst$ sed -i '/e$/a g01\tGhee' produkty.tekst
$ produkty dla kotów.tekst
Następujące 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 pokazane w tym samouczku, aby pomóc czytelnikowi zastosować to polecenie do wstawiania wierszy we wzorcu tymczasowo lub na stałe.