sed

Jak nahradit poslední výskyt pomocí 'sed'

Jak nahradit poslední výskyt pomocí 'sed'
Příkaz „sed“ se v systému Linux používá pro různé typy textových operací, jako je vkládání, mazání, nahrazování atd. Pomocí příkazu 'sed' lze snadno provést různé typy úloh nahrazení. Jakoukoli náhradní úlohu lze provést na základě prohledávaného textu nebo vzoru. Hledaný text nebo vzor se může v řetězci nebo souboru, kde bude hledání provedeno, vyskytnout vícekrát. Jak můžete nahradit poslední výskyt hledaného textu nebo vzoru, bylo ukázáno v tomto výukovém programu.

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 Částka
Leden 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.txt
Prodej $ 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'.

Hry Jak vyvíjet hru na Linuxu
Jak vyvíjet hru na Linuxu
Před deseti lety by jen málo uživatelů Linuxu předpovídalo, že jejich oblíbený operační systém bude jednoho dne populární herní platformou pro komerčn...
Hry Porty komerčních her s otevřeným zdrojovým kódem
Porty komerčních her s otevřeným zdrojovým kódem
Zdarma, s otevřeným zdrojovým kódem a multiplatformní herní enginy lze hrát staré i některé z poměrně nedávných herních titulů. Tento článek uvede sez...
Hry Nejlepší hry z příkazového řádku pro Linux
Nejlepší hry z příkazového řádku pro Linux
Příkazový řádek není při používání Linuxu jen vaším největším spojencem - může být také zdrojem zábavy, protože jej můžete použít k hraní mnoha zábavn...