sed

Cum se înlocuiește ultima apariție folosind „sed”

Cum se înlocuiește ultima apariție folosind „sed”
Comanda "sed" este utilizată în Linux pentru diferite tipuri de operații de text, cum ar fi inserarea, ștergerea, înlocuirea etc. Diferite tipuri de sarcini de înlocuire pot fi realizate utilizând ușor comanda „sed”. Orice sarcină de înlocuire poate fi realizată pe baza textului sau a modelului de căutare. Textul sau modelul de căutare pot apărea de mai multe ori în șir sau într-un fișier unde se va efectua căutarea. Modul în care puteți înlocui ultima apariție a textului sau a modelului de căutare a fost prezentat în acest tutorial.

Î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 Suma
Ianuarie 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.

Cele mai bune emulatoare pentru console de jocuri pentru Linux
Acest articol va enumera programele populare de emulare a consolei de jocuri disponibile pentru Linux. Emularea este un strat de compatibilitate softw...
Best Linux Distros for Gaming in 2021
The Linux operating system has come a long way from its original, simple, server-based look. This OS has immensely improved in recent years and has no...
Cum să capturați și să transmiteți în flux sesiunea de jocuri pe Linux
În trecut, jocurile erau considerate doar un hobby, dar cu timpul industria jocurilor a cunoscut o creștere imensă în ceea ce privește tehnologia și n...