Nahraďte poslední výskyt textu v řetězci:
Tato část ukazuje, jak lze nahradit poslední výskyt vyhledávacího vzoru v řetězci pomocí příkazu „sed“.
Příklad 1: Nahradí poslední výskyt slova na základě vzoru
Následující příkaz 'sed' vyhledá slovo 'PHP' v řetězci a hledané slovo nahraďte slovem 'AngularJS' pokud slovo existuje v řetězci.
$ echo "Java PHP Bash Python JavaScript PERL PHP Laravel" |sed 's / \ (.* \) PHP / \ 1AngularJS / '
Po spuštění příkazu se zobrazí následující výstup. Tady, slovo 'PHP' existuje dvakrát v řetězci a poslední výskyt byl nahrazen slovem ' AngularJS''.
Příklad 2: Nahradí poslední výskyt číslicového vzoru
Následující příkaz 'sed' prohledá jakoukoli číslici v řetězci a nahradí poslední číslici číslem 9.
$ echo "První hodnota čítače 2. Hodnota druhého čítače 4 "|sed 's / \ (.* \) [0-9]) * / \ 19 / '
Po spuštění příkazu se zobrazí následující výstup. Zde se číslice objeví dvakrát v řetězci a poslední číslice, 4, byl nahrazen číslem 9.
Příklad-3: Nahraďte poslední číslici čísla podle vzoru
Následující příkaz 'sed' nahradí poslední číslici, která existuje v hodnotě řetězce, hodnotou za dvojitou nulu (0 0).
$ echo "Cena produktu je 500 $."| sed '/ \ (.* \) [0-9] / \ 100 / 'Po spuštění příkazu se zobrazí následující výstup. Tady, 500 existuje v hodnotě řetězce. Podle příkazu nahrazení tedy poslední nula 500 byl nahrazen dvěma dvojitými nulami a nahrazená hodnota je 5000.
Příklad-4: Nahraďte poslední výskyt slova jiným slovem
Následující příkaz 'sed' vyhledá slovo 'Červen' v řetězci a nahraďte poslední výskyt slova hodnotou, 'Smět'.
$ printf "% s \ n" leden únor červen duben červen prosinec | tr '\ n' "|sed 's / \ (.* \) Jun / \ 1May / '| tr "'\ n'
Po spuštění příkazu se zobrazí následující výstup. Tady, slovo 'Červen' existuje dvakrát v řetězci a poslední výskyt byl nahrazen slovem 'Smět'.
Nahraďte poslední výskyt textu v souboru:
Vytvořte textový soubor s názvem Odbyt.txt s následujícím obsahem otestovat příkaz 'sed' použitý v této části tutoriálu k nahrazení posledního výskytu textu založeného na vzoru.
Odbyt.txt
Měsíc Rok ČástkaLeden 2018 $ 200000
Březen 2019 $ 300000
Duben 2019 150000 $
Březen 2020 350000 $
Květen 2019 210000 USD
Leden 2020 240000 $
Příklad-5: Nahraďte poslední výskyt slova jiným slovem
Následující příkaz 'sed' vyhledá slovo 'Leden'v souboru a nahraďte poslední výskyt tohoto slova tímto slovem, 'Červenec''.
$ kočka prodeje.txtProdej $ sed '$ s / leden / červenec /'.txt
Po spuštění příkazů se zobrazí následující výstup. Slovo 'Leden' se v souboru objeví dvakrát. Poslední výskyt, který existuje v 7th řádek souboru byl nahrazen slovem 'Červenec've výstupu.
Příklad 6: Nahraďte poslední výskyt čísla jiným číslem
'tac' příkaz se používá k převrácení obsahu souboru. 'tac' příkaz se používá s příkazem 'sed' v následujícím příkazu k nahrazení posledního výskytu „2019„se slovem, '2017'.
$ kočka prodeje.txt$ tac tržby.txt | sed '0, / 2019 / s / 2019/2017 /' | tac
Po spuštění příkazů se zobrazí následující výstup. Zde je hodnota roku, „2019'se v souboru objeví třikrát. První, 'tac' příkaz obrátil obsah souboru a odeslal výstup do 'sed' příkaz k nahrazení prvního výskytu '2019' což je poslední výskyt v souboru podle hodnoty roku, '2017'. Po výměně byl výstup odeslán do 'tac' povel k opětovnému obrácení výstupu. Tímto způsobem poslední výskyt '2019'byl nahrazen hodnotou, „2017''.
Příklad-7: Nahradit vše na řádku podle posledního výskytu slova
Následující 'sed' příkaz nahradí řádek textem odděleným tabulátorem (\ t), kde řádek začíná řetězcem 'Mar' naposledy v souboru.
$ kočka prodeje.txt$ tac tržby.txt | sed '0, / ^ Mar.* / s / ^ bře.* / Červenec \ t \ t2018 \ t $ 400000 / '| tac
Po spuštění příkazů se zobrazí následující výstup. Dva řádky v souboru začínají řetězcem, 'Mar', a poslední výskyt tohoto řetězce se objeví v 5th čára. První 'tac' příkaz byl použit k převrácení obsahu souboru a odeslání výstupu do 'sed ' příkaz. ''sed'příkaz nahradil řádek textem,'Červenec 2018 $ 400000'kde byl vyhledávací řetězec nalezen poprvé. Výstup z sed"příkaz byl odeslán do 'tac' opětovným příkazem obrátíte výstup, který je hlavním obsahem souboru.
Závěr:
Příkaz 'sed' lze použít k nahrazení jakékoli části řetězce nebo řádku souboru různými způsoby pomocí vzorů regulárních výrazů. Tento výukový program ukázal způsoby, jak nahradit poslední výskyt hledaného textu v řetězci nebo souboru pomocí více příkazů „sed“. Jak lze použít příkaz 'tac' s příkazem 'sed' k nahrazení posledního výskytu hledaného textu, bylo také ukázáno v tomto výukovém programu. Ale všechny zde použité příkazy vygenerují výstup dočasně. Chcete-li trvale změnit obsah souboru podle vzoru, musíte použít volbu '-i' s příkazem 'sed'.