sed

Kako nadomestiti zadnji pojav z uporabo 'sed'

Kako nadomestiti zadnji pojav z uporabo 'sed'
ukaz 'sed' se v Linuxu uporablja za različne vrste besedilnih operacij, kot so vstavljanje, brisanje, zamenjava itd. Z enostavno uporabo ukaza 'sed' lahko izvedete različne vrste nadomestnih nalog. Vsako nadomestno opravilo lahko opravite na podlagi besedila ali vzorca za iskanje. Besedilo ali vzorec za iskanje se lahko večkrat pojavi v nizu ali datoteki, kjer bo iskanje izvedeno. V tej vadnici je prikazano, kako lahko nadomestite zadnji pojav iskalnega besedila ali vzorca.

Zamenjajte zadnji pojav besedila v nizu:

Ta odsek prikazuje, kako lahko z uporabo ukaza 'sed' nadomestimo zadnji pojav iskalnega vzorca v nizu.

Primer-1: Zamenjajte zadnji pojav besede na podlagi vzorca

Naslednji ukaz 'sed' bo poiskal besedo 'PHP' v nizu in zamenjajte iskalno besedo z besedo 'AngularJS' če beseda obstaja v nizu.

$ echo "Java PHP Bash Python JavaScript PERL PHP Laravel" |
sed 's / \ (.* \) PHP / \ 1AngularJS / '

Po zagonu ukaza se prikaže naslednji izhod. Tukaj, beseda 'PHP' obstaja dvakrat v nizu, zadnji pojav pa je nadomestila beseda ' Kotni JS".

Primer-2: Zamenjajte zadnji pojav cifrov

Naslednji ukaz 'sed' bo poiskal katero koli številko v nizu in nadomestil zadnjo številko s številko 9.

$ echo "Prva vrednost števca 2. Druga vrednost števca 4 "|
sed 's / \ (.* \) [0-9]) * / \ 19 / '

Po zagonu ukaza se prikaže naslednji izhod. Tu se številka dvakrat prikaže v nizu in zadnja številka, 4, je bila nadomeščena s številko 9.

Primer 3: Zamenjajte zadnjo številko številke glede na vzorec

Naslednji ukaz 'sed' bo nadomestil zadnjo številko, ki obstaja v vrednosti niza, z vrednostjo z dvojno ničlo (0 0).

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

Po zagonu ukaza se prikaže naslednji izhod. Tukaj, 500 obstaja v vrednosti niza. Torej, glede na nadomestni ukaz, zadnja ničla 500 je bil nadomeščen z dvema dvojnima ničma, nadomeščena vrednost pa je 5000.

Primer 4: Zamenjajte zadnji pojav besede z drugo besedo

Naslednji ukaz 'sed' bo poiskal besedo 'Junij' v nizu in nadomestite zadnji pojav besede z vrednostjo, 'Maj'.

$ printf "% s \ n" januar februar junij april junij dec | tr '\ n' "|
sed 's / \ (.* \) Junij / \ 1.maj / '| tr "'\ n'

Po zagonu ukaza se prikaže naslednji izhod. Tukaj, beseda 'Junij' obstaja dvakrat v nizu, zadnji pojav pa je nadomestila beseda 'Maj'.

Zamenjajte zadnji pojav besedila v datoteki:

Ustvarite besedilno datoteko z imenom Prodaja.txt z naslednjo vsebino za preizkus ukaza 'sed', uporabljenega v tem delu vadnice za nadomestitev zadnjega pojavljanja besedila na podlagi vzorca.

Prodaja.txt

Mesec Leto Znesek
Januar 2018 200000 USD
Marec 2019 300000 USD
April 2019 150000 USD
Marec 2020 350000 USD
Maj 2019 210000 USD
Januar 2020 240000 USD

Primer 5: Zamenjajte zadnji pojav besede z drugo besedo

Naslednji ukaz 'sed' bo poiskal besedo 'Januar'v datoteki in nadomestite zadnji pojav te besede z besedo, 'Julij".

$ mačka Prodaja.txt
$ sed '$ s / januar / julij /' Prodaja.txt

Po zagonu ukazov se prikaže naslednji izhod. Beseda 'Januar' se v datoteki prikaže dvakrat. Zadnji pojav, ki obstaja v 7th vrstica datoteke je bila nadomeščena z besedo 'Julij'v izhodu.

Primer 6: Zamenjajte zadnji pojav številke z drugo številko

'tac' ukaz se uporablja za obračanje vsebine datoteke. 'tac' ukaz se uporablja z ukazom 'sed' v naslednjem ukazu za nadomestitev zadnjega pojava '2019'z besedo, '2017'.

$ mačka prodaja.txt
$ tac Prodaja.txt | sed '0, / 2019 / s / 2019/2017 /' | tac

Po zagonu ukazov se prikaže naslednji izhod. Tukaj je vrednost leta, '2019'se v datoteki trikrat prikaže. Prvi, 'tac' ukaz je obrnil vsebino datoteke in poslal izhod v datoteko 'sed' ukaz za zamenjavo prvega pojava '2019' kar je zadnji pojav v datoteki po vrednosti leta, '2017'. Po zamenjavi je bil izhod poslan na 'tac' ukaz, da znova obrnete izhod. Na ta način je zadnji pojav2019"je bil nadomeščen z vrednostjo, '2017".

Primer 7: Zamenjajte vse vrstice glede na zadnji pojav besede

Naslednji 'sed' ukaz bo vrstico zamenjal z besedilom, ločenim z zavihkom (\ t), kjer se vrstica začne z nizom 'Mar' zadnjič v datoteki.

$ mačka Prodaja.txt
$ tac Prodaja.txt | sed '0, / ^ mar.* / s / ^ mar.* / Julij \ t \ t2018 \ t 400000 $ / '| tac

Po zagonu ukazov se prikaže naslednji izhod. Dve vrstici v datoteki se začneta z nizom, 'Mar', in zadnji pojav tega niza se prikaže v 5th črta. Prvi 'tac' ukaz je bil uporabljen za razveljavitev vsebine datoteke in je izhod poslal v 'sed ' ukaz. "sed'ukaz je vrstico zamenjal z besedilom,'Julij 2018 400000 USD'kjer je iskalni niz najden prvič. Rezultat "sedukaz je bil poslan na 'tac' znova ukaz za razveljavitev izhoda, ki je glavna vsebina datoteke.

Zaključek:

Ukaz 'sed' lahko uporabimo za nadomestitev katerega koli dela niza ali vrstice datoteke na različne načine z uporabo vzorcev regularnih izrazov. Ta vadnica je pokazala načine, kako nadomestiti zadnji pojav iskalnega besedila v nizu ali datoteki z uporabo več ukazov 'sed'. V tej vadnici je prikazano tudi, kako lahko ukaz 'tac' uporabimo z ukazom 'sed', da nadomestimo zadnji pojav iskalnega besedila. Toda vsi tukaj uporabljeni ukazi bodo začasno ustvarili izhod. Za trajno spreminjanje vsebine datoteke glede na vzorec morate uporabiti možnost '-i' z ukazom 'sed'.

Vadnica za OpenTTD
OpenTTD je ena izmed najbolj priljubljenih poslovnih simulacijskih iger. V tej igri morate ustvariti čudovit prevozniški posel. Vendar boste začeli na...
SuperTuxKart za Linux
SuperTuxKart je odličen naslov, zasnovan tako, da vam brezplačno ponuja izkušnjo Mario Kart v vašem sistemu Linux. Igrati je precej zahtevno in zabavn...
Vadnica za bitko za Wesnoth
Bitka za Wesnoth je ena izmed najbolj priljubljenih odprtokodnih strateških iger, ki jih lahko trenutno igrate. Ne samo, da se ta igra razvija že zelo...