Înlocuiți ultima apariție a textului într-un șir:
Această secțiune arată cum ultima apariție a modelului de căutare într-un șir poate fi înlocuită folosind comanda „sed”.
Exemplu-1: Înlocuiți ultima apariție a unui cuvânt pe baza modelului
Următoarea comandă „sed” va căuta cuvântul „PHP” în șir și înlocuiți cuvântul de căutare cu cuvântul „AngularJS” dacă cuvântul există în șir.
$ echo "Java PHP Bash Python JavaScript PERL PHP Laravel" |sed 's / \ (.* \) PHP / \ 1AngularJS / '
Următoarea ieșire va apărea după executarea comenzii. Aici, cuvântul „PHP” există de două ori în șir, iar ultima apariție a fost înlocuită cu cuvântul „ AngularJS'.
Exemplul-2: Înlocuiți ultima apariție a modelului bazat pe cifre
Următoarea comandă „sed” va căuta orice cifră din șir și va înlocui ultima cifră cu numărul 9.
$ echo "Prima valoare a contorului 2. A doua valoare de contor 4 "|sed 's / \ (.* \) [0-9]) * / \ 19 / '
Următoarea ieșire va apărea după executarea comenzii. Aici, cifra apare de două ori în șir, iar ultima cifră, 4, a fost înlocuit cu numărul 9.
Exemplul-3: Înlocuiți ultima cifră a unui număr pe baza modelului
Următoarea comandă „sed” va înlocui ultima cifră care există în valoarea șirului cu valoarea cu dublu zero (0 0).
$ echo "Prețul produsului este de 500 $."| sed 's / \ (.* \) [0-9] / \ 100 / 'Următoarea ieșire va apărea după executarea comenzii. Aici, 500 există în valoarea șirului. Deci, conform comenzii de înlocuire, ultimul zero din 500 a fost înlocuit cu două duble zero, iar valoarea înlocuită este 5000.
Exemplul-4: Înlocuiți ultima apariție a unui cuvânt cu un alt cuvânt
Următoarea comandă „sed” va căuta cuvântul 'Iunie' în șir și înlocuiți ultima apariție a cuvântului cu valoarea, 'Mai'.
$ printf "% s \ n" ianuarie februarie iunie iunie decembrie | tr '\ n' "|sed 's / \ (.* \) Iunie / \ 1mai / '| tr "'\ n'
Următoarea ieșire va apărea după executarea comenzii. Aici, cuvântul 'Iunie' există de două ori în șir, iar ultima apariție a fost înlocuită cu cuvântul 'Mai'.
Înlocuiți ultima apariție a unui text într-un fișier:
Creați un fișier text numit Vânzări.txt cu următorul conținut pentru a testa comanda „sed” folosită în această parte a tutorialului pentru înlocuirea ultimei apariții a unui text bazat pe model.
Vânzări.txt
Luna An SumaIanuarie 2018 $ 200000
Martie 2019 300000 USD
Aprilie 2019 150000 USD
Martie 2020 350000 USD
Mai 2019 210000 USD
Ianuarie 2020 240000 USD
Exemplul-5: Înlocuiți ultima apariție a unui cuvânt cu un alt cuvânt
Următoarea comandă „sed” va căuta cuvântul 'Ianuarie'în fișier și înlocuiți ultima apariție a acestui cuvânt cu cuvântul, 'Iulie'.
$ cat Vânzări.txt$ sed '$ s / ianuarie / iulie /' Vânzări.txt
Următoarea ieșire va apărea după executarea comenzilor. Cuvantul 'Ianuarie' apare de două ori în fișier. Ultima apariție care există în 7a linia fișierului a fost înlocuită cu cuvântul 'Iulie'în ieșire.
Exemplu-6: Înlocuiți ultima apariție a unui număr cu un alt număr
„tac” comanda este utilizată pentru a inversa conținutul fișierului. „tac” comanda este utilizată cu comanda „sed” din următoarea comandă pentru a înlocui ultima apariție a „2019'cu cuvântul, „2017”.
$ cat Vânzări.txt$ tac Vânzări.txt | sed '0, / 2019 / s / 2019/2017 /' | tac
Următoarea ieșire va apărea după executarea comenzilor. Aici, valoarea anului, „2019'apare de trei ori în fișier. Primul, „tac” comanda a inversat conținutul fișierului și a trimis ieșirea în fișierul "sed" comanda pentru a înlocui prima apariție a „2019” care este ultima apariție din fișier după valoarea anului, „2017”. După înlocuire, ieșirea a fost trimisă la „tac” comanda pentru a inversa din nou ieșirea. În acest fel, ultima apariție a „2019'a fost înlocuit cu valoarea, '2017'.
Exemplu-7: Înlocuiți totul dintr-o linie pe baza ultimei apariții a unui cuvânt
Următoarele "sed" comanda va înlocui linia cu un text delimitat de tab (\ t) unde linia începe cu șirul „Mar” pentru ultima dată în dosar.
$ cat Vânzări.txt$ tac Vânzări.txt | sed '0, / ^ Mar.* / s / ^ Mar.* / Iulie \ t \ t2018 \ t 400000 $ / '| tac
Următoarea ieșire va apărea după executarea comenzilor. Două linii din fișier încep cu șirul, „Mar”, iar ultima apariție a acestui șir apare în 5a linia. Primul „tac” comanda a fost utilizată pentru a inversa conținutul fișierului și a trimis ieșirea către „sed ' comanda. 'sed„comanda a înlocuit linia cu un text,”Jully 2018 400000 $'unde s-a găsit șirul de căutare pentru prima dată. Rezultatul „sed'comanda a fost trimisă către „tac” comandați din nou pentru a inversa ieșirea care este conținutul principal al fișierului.
Concluzie:
Comanda „sed” poate fi utilizată pentru a înlocui orice parte a unui șir sau a unei linii a fișierului în moduri diferite, utilizând modele de expresie regulată. Acest tutorial a arătat modalitățile de a înlocui ultima apariție a textului de căutare într-un șir sau într-un fișier folosind mai multe comenzi „sed”. Modul în care comanda „tac” poate fi utilizată cu comanda „sed” pentru a înlocui ultima apariție a textului de căutare a fost, de asemenea, prezentată în acest tutorial. Dar toate comenzile folosite aici vor genera ieșirea temporar. Trebuie să utilizați opțiunea „-i” cu comanda „sed” pentru a schimba conținutul fișierului permanent pe baza modelului.