Nahraďte posledný výskyt textu v reťazci:
Táto časť ukazuje, ako je možné nahradiť posledný výskyt vyhľadávacieho vzoru v reťazci pomocou príkazu „sed“.
Príklad 1: Nahradiť posledný výskyt slova na základe vzoru
Nasledujúci príkaz „sed“ vyhľadá slovo „PHP“ v reťazci a hľadané slovo nahraďte slovom „AngularJS“ ak slovo existuje v reťazci.
$ echo "Java PHP Bash Python JavaScript PERL PHP Laravel" |sed 's / \ (.* \) PHP / \ 1AngularJS / '
Po spustení príkazu sa objaví nasledujúci výstup. Tu slovo „PHP“ v reťazci existuje dvakrát a posledný výskyt bol nahradený slovom „ AngularJS„.
Príklad-2: Nahradiť posledný výskyt číslicového vzoru
Nasledujúci príkaz „sed“ prehľadá ktorúkoľvek číslicu v reťazci a nahradí poslednú číslicu číslom 9.
$ echo "Hodnota prvého počítadla 2. Hodnota druhého počítadla 4 "|sed 's / \ (.* \) [0-9]) * / \ 19 / '
Po spustení príkazu sa objaví nasledujúci výstup. Tu sa číslica v reťazci zobrazí dvakrát a posledná číslica, 4, bolo nahradené číslom 9.
Príklad-3: Nahraďte poslednú číslicu čísla podľa vzoru
Nasledujúci príkaz „sed“ nahradí poslednú číslicu, ktorá existuje v hodnote reťazca, hodnotou za dvojnásobnú nulu (0 0).
$ echo „Cena produktu je 500 dolárov."| sed '/ \ (.* \) [0-9] / \ 100 / 'Po spustení príkazu sa objaví nasledujúci výstup. Tu, 500 v hodnote reťazca existuje. Podľa príkazu nahradenia teda posledná nula 500 bol nahradený dvoma dvojitými nulami a nahradená hodnota je 5 000.
Príklad-4: Nahradiť posledný výskyt slova iným slovom
Nasledujúci príkaz „sed“ vyhľadá slovo „Jún“ v reťazci a posledný výskyt slova nahraďte hodnotou, 'Smieť'.
$ printf "% s \ n" január február jún apríl jún december | tr '\ n' "|sed 's / \ (.* \) Jún / \ 1máj / '| tr "'\ n'
Po spustení príkazu sa objaví nasledujúci výstup. Tu slovo „Jún“ existuje v reťazci dvakrát a posledný výskyt bol nahradený slovom 'Smieť'.
Nahraďte posledný výskyt textu v súbore:
Vytvorte textový súbor s názvom Predaj.TXT s nasledujúcim obsahom na otestovanie príkazu „sed“ použitého v tejto časti tutoriálu na nahradenie posledného výskytu textu na základe vzoru.
Predaj.TXT
Mesiac Rok SumaJanuár 2018 200 000 dolárov
Marec 2019 300 000 dolárov
Apríla 2019 1 50000 dolárov
Marec 2020 3 500 000 dolárov
Máj 2019 210000 dolárov
Január 2020 240000 dolárov
Príklad-5: Nahradiť posledný výskyt slova iným slovom
Nasledujúci príkaz „sed“ vyhľadá slovo „Január'v súbore a posledný výskyt tohto slova sa nahradí slovom, „Júl„.
$ predaj mačky.TXT$ sed '$ s / január / júl /' tržby.TXT
Po vykonaní príkazov sa zobrazí nasledujúci výstup. Slovo „Január“ sa v súbore objaví dvakrát. Posledný výskyt, ktorý existuje v 7th riadok súboru bol nahradený slovom „Júl'vo výstupe.
Príklad-6: Nahradiť posledný výskyt čísla iným číslom
'tac' príkaz sa používa na obrátenie obsahu súboru. 'tac' príkaz sa používa s príkazom 'sed' v nasledujúcom príkaze na nahradenie posledného výskytu „2019„so slovom, „2017“.
$ predaj mačky.TXT$ tac tržby.txt | sed '0, / 2019 / s / 2019/2017 /' | tac
Po vykonaní príkazov sa zobrazí nasledujúci výstup. Tu hodnota roku, „2019„sa v súbore zobrazí trikrát. Prvý, 'tac' príkaz obrátil obsah súboru a poslal výstup do „sed“ príkaz na nahradenie prvého výskytu „2019“ čo je posledný výskyt v súbore podľa hodnoty roku, „2017“. Po výmene bol výstup odoslaný do 'tac' príkaz na opätovné obrátenie výstupu. Týmto spôsobom sa posledný výskyt „2019„bol nahradený hodnotou, „2017„.
Príklad-7: Nahradiť všetko v riadku na základe posledného výskytu slova
Nasledujúci „sed“ príkaz nahradí riadok textom oddeleným tabulátormi (\ t), kde riadok začína reťazcom „Mar“ naposledy v spise.
$ predaj mačky.TXT$ tac tržby.txt | sed '0, / ^ Mar.* / s / ^ mar.* / Júl \ t \ t2018 \ t 400000 $ / '| tac
Po vykonaní príkazov sa zobrazí nasledujúci výstup. Dva riadky v súbore začínajú reťazcom, „Mar“, a posledný výskyt tohto reťazca sa objaví v 5th riadok. Prvý 'tac' príkaz bol použitý na obrátenie obsahu súboru a odoslanie výstupu do 'sed ' príkaz. „sed'príkaz nahradil riadok textom,'Júl 2018 400 000 dolárov"kde sa hľadaný reťazec našiel prvýkrát. Výstup z „sed"príkaz bol odoslaný do 'tac' opätovným príkazom zvrátite výstup, ktorý je hlavným obsahom súboru.
Záver:
Príkaz „sed“ možno použiť na nahradenie ľubovoľnej časti reťazca alebo riadku súboru rôznymi spôsobmi pomocou vzorov regulárneho výrazu. Tento tutoriál ukázal spôsoby, ako nahradiť posledný výskyt hľadaného textu v reťazci alebo súbore pomocou viacerých príkazov „sed“. V tomto výučbe je tiež uvedené, ako je možné použiť príkaz „tac“ s príkazom „sed“ na nahradenie posledného výskytu hľadaného textu. Ale všetky tu použité príkazy generujú výstup dočasne. Ak chcete trvalo zmeniť obsah súboru na základe vzoru, musíte použiť voľbu „-i“ príkazom „sed“.