sed

Kuidas asendada viimane juhtum 'sed' abil

Kuidas asendada viimane juhtum 'sed' abil
käsku "sed" kasutatakse Linuxis mitmesuguste tekstitoimingute jaoks, nagu sisestamine, kustutamine, asendamine jne. Erinevat tüüpi asendusülesandeid saab hõlpsalt käsuga 'sed' kasutada. Mis tahes asendustoimingu saab teha otsitava teksti või mustri põhjal. Otsitav tekst või muster võib esineda mitu korda stringis või failis, kus otsitakse. Selles õpetuses on näidatud, kuidas saab otsitava teksti või mustri viimast esinemist asendada.

Asenda stringi teksti viimane esinemine:

See jaotis näitab, kuidas stringi otsimismustri viimast esinemist saab käsu 'sed' abil asendada.

Näide 1: asendage sõna viimane esinemine mustri põhjal

Järgmine käsk 'sed' otsib sõna 'PHP' stringis ja asendage otsitav sõna sõnaga 'NurkJS' kui sõna on stringis olemas.

$ echo "Java PHP Bash Python JavaScripti PERL PHP Laravel" |
sed / \ (.* \) PHP / \ 1nurkJS / '

Pärast käsu käivitamist ilmub järgmine väljund. Siin see sõna 'PHP' eksisteerib stringis kaks korda ja viimane kord on asendatud sõnaga ' NurgaJS".

Näide 2: asendage viimane numbril põhinev muster

Järgmine käsk 'sed' otsib stringis suvalist numbrit ja asendab viimase numbri numbriga 9.

$ echo "Esimene loenduri väärtus 2. Teine loenduri väärtus 4 "|
sed / \ (.* \) [0–9]) * / \ 19 / '

Pärast käsu käivitamist ilmub järgmine väljund. Siin ilmub string stringis kaks korda ja viimane number, 4, on asendatud numbriga 9.

Näide 3: asendage mustri põhjal numbri viimane number

Järgmine käsk „sed” asendab stringi väärtuses viimase numbri topelt nulliga (0 0).

$ echo "Toote hind on 500 dollarit."| sed 's / \ (.* \) [0–9] / \ 100 / '

Pärast käsu käivitamist ilmub järgmine väljund. Siin, 500 on stringi väärtuses olemas. Niisiis, asenduskäskluse järgi viimane null 500 on asendatud kahe topelt nulliga ja asendatud väärtus on 5000.

Näide 4: asendage sõna viimane esinemine teise sõnaga

Järgmine käsk 'sed' otsib sõna "Juuni" stringis ja asenda sõna viimane esinemine väärtusega, "Mai".

$ printf "% s \ n" Jaan Veeb Juun Apr Juuni Dets | tr '\ n' "|
sed / \ (.* \) Juuni / \ 1mai / '| tr "'\ n'

Pärast käsu käivitamist ilmub järgmine väljund. Siin see sõna "Juuni" eksisteerib stringis kaks korda ja viimane esinemine on asendatud sõnaga "Mai".

Asendage failis teksti viimane esinemine:

Looge nimega tekstifail Müük.txt järgmise sisuga, et testida õpetuse selles osas kasutatud käsku „sed” mustri põhjal teksti viimase esinemise asendamiseks.

Müük.txt

Kuu Aasta summa
Jaanuar 2018 200 000 dollarit
Märts 2019 300 000 dollarit
Aprill 2019 150000 dollarit
Märts 2020 350000 dollarit
Mai 2019 210000 dollarit
Jaanuar 2020 240000 dollarit

Näide 5: asendage sõna viimane esinemine teise sõnaga

Järgmine käsk 'sed' otsib sõna "Jaanuar'ja asendage selle sõna viimane esinemine sõnaga, 'Juuli".

$ kassimüük.txt
$ sed '$ s / jaanuar / juuli /' Müük.txt

Pärast käskude käivitamist ilmub järgmine väljund. Sõna "Jaanuar" ilmub faili kaks korda. Viimane juhtum, mis on olemas 7-sth faili rida on asendatud sõnaga 'Juuli'väljundis.

Näide 6: asendage numbri viimane esinemine teise numbriga

"tac" käsku kasutatakse faili sisu ümberpööramiseks. "tac" käsku kasutatakse järgmises käsus käsuga 'sed', et asendada viimane käsk '2019'sõnaga, "2017".

$ kassimüük.txt
$ tac Müük.txt | sed '0, / 2019 / s / 2019/2017 /' | tac

Pärast käskude käivitamist ilmub järgmine väljund. Siin aasta väärtus, '2019'ilmub failis kolm korda. Esimene, "tac" käsk on muutnud faili sisu ja saatnud väljundi "sed" käsk asendada esimene esinemine '2019' mis on failis viimane esinemine aasta väärtuse järgi, "2017". Pärast väljavahetamist on väljund saadetud "tac" käsk väljundi uuesti tagasi pöörata. Sel viisil on viimane2019. aasta'on asendatud väärtusega, '2017".

Näide 7: asendage rea kõik sõna viimase esinemise põhjal

Järgnev "sed" käsk asendab rea vahekaardiga (\ t) eraldatud tekstiga, kus rida algab stringiga "Märts" failis viimast korda.

$ kassimüük.txt
$ tac Müük.txt | sed '0, / ^ märt.* / s / ^ märts.* / Juuli \ t \ t2018 \ t $ 400000 / '| tac

Pärast käskude käivitamist ilmub järgmine väljund. Kaks faili rida algavad stringiga, "Märts", ja selle stringi viimane esinemine ilmub 5th rida. Esimene "tac" käsku on kasutatud faili sisu vastupidiseks muutmiseks ja väljund saadeti 'sed ' käsk. "sed'käsk on rea asendanud tekstiga,'Juuli 2018 400 000 dollarit'kus otsitav string esimest korda leiti. Väljund the 'sed'käsk on saadetud "tac" käsk uuesti faili põhisisuks oleva väljundi vastupidiseks muutmiseks.

Järeldus:

'sed' käsku saab kasutada mis tahes stringi või failirea asendamiseks erineval viisil, kasutades regulaaravaldise mustreid. See õpetus näitas viise, kuidas asendada stringi või faili otsitava teksti viimane kordus mitme „sed” käsu abil. Selles juhendis on näidatud ka seda, kuidas käsku 'tac' saab käsuga 'sed' asendada otsitava teksti viimase esinemise korral. Kuid kõik siin kasutatavad käsud genereerivad väljundi ajutiselt. Faili sisu püsivaks muutmiseks mustri põhjal peate kasutama valikut '-i' käsuga 'sed'.

SuperTuxKart Linuxile
SuperTuxKart on suurepärane pealkiri, mis on loodud selleks, et tuua teie Linuxi süsteemis tasuta Mario Karti kogemus. See on päris keeruline ja lõbus...
Lahing Wesnothi õpetuse eest
Battle for Wesnoth on üks populaarsemaid avatud lähtekoodiga strateegiamänge, mida saate praegu mängida. See mäng pole mitte ainult olnud väga pikka a...
0 A.D. Õpetus
Paljudest strateegiamängudest on 0 A.D. suudab silma paista põhjaliku tiitli ja väga sügava taktikalise mänguna, hoolimata sellest, et see on avatud l...