sed

Ako nahradiť posledný výskyt pomocou výrazu „sed“

Ako nahradiť posledný výskyt pomocou výrazu „sed“
Príkaz „sed“ sa v systéme Linux používa na rôzne typy textových operácií, ako napríklad vkladanie, mazanie, nahrádzanie atď. Rôzne typy náhradných úloh je možné vykonať jednoducho pomocou príkazu „sed“. Na základe hľadaného textu alebo vzoru je možné vykonať akúkoľvek úlohu výmeny. Vyhľadávaný text alebo vzor sa môže vyskytnúť viackrát v reťazci alebo súbore, v ktorom sa bude hľadať. Ako môžete nahradiť posledný výskyt hľadaného textu alebo vzoru, bolo ukázané v tomto výučbe.

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 Suma
Januá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“.

Ako používať Xdotool na stimuláciu kliknutí a stlačenia myši v systéme Linux
Xdotool je bezplatný a otvorený nástroj príkazového riadku na simuláciu kliknutí a stlačenia klávesov myši. Tento článok sa bude týkať stručného sprie...
Top 5 ergonomických produktov pre počítačové myši pre Linux
Spôsobuje dlhodobé používanie počítača bolesť zápästia alebo prstov? Trpíte stuhnutými kĺbmi a neustále si musíte podávať ruky? Cítite pálivú bolesť z...
Ako zmeniť nastavenie myši a touchpadu pomocou systému Xinput v systéme Linux
Väčšina distribúcií systému Linux sa štandardne dodáva s knižnicou „libinput“ na spracovanie vstupných udalostí v systéme. Dokáže spracovať vstupné ud...