Jak wymienić ostatnie zdarzenie za pomocą „sed”

Jak wymienić ostatnie zdarzenie za pomocą „sed”
Polecenie „SED” jest używane w Linux dla różnych rodzajów operacji tekstowych, takich jak wstawienie, usuwanie, wymian itp. Różne rodzaje zadań zastępczych można wykonać za pomocą polecenia „SED” łatwo. Każde zadanie zastępcze można wykonać na podstawie tekstu lub wzoru wyszukiwania. Tekst lub wzór wyszukiwania może wystąpić wiele razy w ciągu lub pliku, w którym wyszukiwanie zostanie przeprowadzone. W tym samouczku pokazano, jak wymienić ostatnie wystąpienie tekstu lub wzorca wyszukiwania.

Wymień ostatnie wystąpienie tekstu w ciągu:

Ta sekcja pokazuje, w jaki sposób ostatnie wystąpienie wzorca wyszukiwania w ciągu można zastąpić za pomocą polecenia „SED”.

Przykład-1: Wymień ostatnie wystąpienie słowa opartego na wzorze

Poniższe polecenie „sed” przeszuka słowo „Php” w ciągu i wymień wyszukiwający słowo słowem „Angularjs” Jeśli słowo istnieje w ciągu.

$ echo "Java php bash python JavaScript Perl php laravel" |
sed 's/\ (.*\) Php/\ 1angularjs/'

Po uruchomieniu polecenia pojawi się następujące dane wyjściowe. Tutaj, słowo „Php” istnieje dwa razy w ciągu, a ostatnie zdarzenie zostało zastąpione słowem ' Angularjs'.

Przykład-2: Wymień ostatnie występowanie wzoru opartego na cyfrowym

Poniższe polecenie „SED” przeszukie dowolną cyfrę w ciągu i zastąpi ostatnią cyfrę liczbą 9.

$ echo "Pierwsza wartość licznika 2. Druga wartość licznika 4 "|
sed 's/\ (.*\) [0-9])*/\ 19/'

Po uruchomieniu polecenia pojawi się następujące dane wyjściowe. Tutaj cyfra pojawia się dwa razy w ciągu i ostatniej cyfrze, 4, został zastąpiony liczbą 9.

Przykład-3: Wymień ostatnią cyfrę liczby na podstawie wzoru

Poniższe polecenie „SED” zastąpi ostatnią cyfrę, która istnieje w wartości ciągu według wartości przez podwójne zero (0 0).

$ echo „Cena produktu wynosi 500 USD."| sed 's/\ (.*\) [0-9]/\ 100/'

Po uruchomieniu polecenia pojawi się następujące dane wyjściowe. Tutaj, 500 istnieje w wartości ciągu. Tak więc, zgodnie z poleceniem zastępczym, ostatnie zero 500 został zastąpiony dwoma podwójnymi zerami, a wymieniona wartość to 5000.

Przykład-4: Zastąp ostatnie wystąpienie słowa innym słowem

Poniższe polecenie „sed” przeszuka słowo „Jun” w ciągu i zastąp ostatnie wystąpienie słowa wartością, 'Móc'.

$ printf "%s \ n" styczeń lutego czerwca czerwca grudnia | tr '\ n' "|
sed 's/\ (.*\) Jun/\ 1may/'| Tr "'\ n'

Po uruchomieniu polecenia pojawi się następujące dane wyjściowe. Tutaj, słowo „Jun” istnieje dwa razy w ciągu, a ostatnie zdarzenie zostało zastąpione słowem 'Móc'.

Wymień ostatnie wystąpienie tekstu w pliku:

Utwórz plik tekstowy o nazwie Obroty.tekst z następującą zawartością do przetestowania polecenia „SED” użytego w tej części samouczka do zastąpienia ostatniego wystąpienia tekstu na podstawie wzoru.

Obroty.tekst

Kwota roku miesiąca
Styczeń 2018 200000 $
Marzec 2019 300000 USD
Kwiecień 2019 150000 $
Marca 2020 350000 $
Maj 2019 210000 $
Styczeń 2020 240000 $

Przykład-5: Zastąp ostatnie wystąpienie słowa innym słowem

Poniższe polecenie „sed” przeszuka słowo 'Styczeń„W pliku i zastąp ostatnie wystąpienie tego słowa słowem, 'Lipiec'.

Sprzedaż CAT.tekst
$ sed '$ s/styczeń/lipiec/' sprzedaż.tekst

Następujące dane wyjściowe pojawią się po uruchomieniu poleceń. Słowo 'Styczeń' pojawia się dwa razy w pliku. Ostatnie zdarzenie, które istnieje w 7th Linia pliku została zastąpiona słowem 'Lipiec„W wyjściu.

Przykład-6: Wymień ostatnie występowanie liczby inną liczbą

„tac” Polecenie służy do odwrócenia zawartości pliku. „tac” polecenie jest używane z poleceniem „sed” w następującym poleceniu, aby zastąpić ostatnie wystąpienie „2019„Słowo, „2017”.

Sprzedaż CAT.tekst
Sprzedaż $ TAC.txt | SED '0,/2019/S/2019/2017/' | tac

Następujące dane wyjściowe pojawią się po uruchomieniu poleceń. Tutaj wartość roku, „2019„Pojawia się trzy razy w pliku. Pierwszy, „tac” Polecenie odwróciło zawartość pliku i wysłało wyjście do „sed” polecenie zastąpienia pierwszego wystąpienia „2019” który jest ostatnim zdarzeniem w pliku według wartości roku, „2017”. Po wymianie wyjście zostało wysłane do „tac” polecenie ponownie odwrócić wyjście. W ten sposób ostatnie wystąpienie '2019„Został zastąpiony wartością, „2017'.

Przykład-7: Wymień wszystko z linii na podstawie ostatniego wystąpienia słowa

Następujące „sed” Polecenie zastąpi linię na tablicę (\ t), w którym linia zaczyna się od ciągu 'Zniszczyć' po raz ostatni w pliku.

Sprzedaż CAT.tekst
Sprzedaż $ TAC.txt | sed '0,/^mar.*/s/^mar.*/Lipiec \ t \ t2018 \ t 400000 $/ '| tac

Następujące dane wyjściowe pojawią się po uruchomieniu poleceń. Dwa wiersze w pliku zaczynają się od ciągu, 'Zniszczyć', a ostatnie wystąpienie tego ciągu pojawia się w 5th linia. Pierwszy „tac” Polecenie zostało użyte do odwrócenia zawartości pliku i wysłania danych wyjściowych do 'sed ' Komenda. 'sed„Polecenie zastąpiło wiersz tekstem”Jully 2018 400000 $„gdzie po raz pierwszy znaleziono ciąg wyszukiwania. Wyjście „sed„polecenie zostało wysłane do „tac” Poleć ponownie, aby odwrócić dane wyjściowe, które jest główną zawartością pliku.

Wniosek:

Polecenie „SED” można użyć do zastąpienia dowolnej części ciągu lub wiersza pliku na różne sposoby, używając wzorców wyrażeń regularnych. Ten samouczek pokazał, jak zastąpić ostatnie wystąpienie tekstu wyszukiwania w ciągu lub pliku za pomocą wielu poleceń „sed”. Jak można użyć polecenia „TAC” z poleceniem „SED” w celu zastąpienia ostatniego wystąpienia tekstu wyszukiwania, zostało również pokazane w tym samouczku. Ale wszystkie użyte tutaj polecenia tymczasowo wygenerują wyjście. Musisz użyć opcji „-i” z poleceniem „SED”, aby zmienić zawartość pliku na stałe na podstawie wzoru.