Možno bude niekedy potrebné odstrániť znaky z reťazca. Nech už je dôvod akýkoľvek, Linux vám poskytuje rôzne vstavané a užitočné nástroje, ktoré vám umožňujú odstrániť znaky z reťazca v Bashi. Tento článok ukazuje, ako pomocou týchto nástrojov odstrániť znaky z reťazca.
V tomto článku sa dozviete, ako vykonať nasledujúce činnosti:
- Odstrániť znak z reťazca pomocou sed
- Odstráňte znak z reťazca pomocou awk
- Odstráňte znak z reťazca pomocou rezu
- Odstráňte znak z reťazca pomocou tr
Príkazy zobrazené v tomto článku boli vykonané v systéme Ubuntu 20.04 Focal Fossa. Rovnaké príkazy je možné vykonať aj v iných distribúciách systému Linux, ktoré majú k dispozícii vyššie uvedené nástroje. Na spustenie príkazov použijeme predvolenú aplikáciu Terminal. K aplikácii Terminál môžete pristupovať pomocou klávesovej skratky Ctrl + Alt + T.
Odstrániť znaky z reťazca pomocou sed
Sed je výkonný a užitočný nástroj, ktorý sa používa na úpravu prúdov textu. Jedná sa o neinteraktívny textový editor, ktorý vám umožňuje vykonávať základné textové manipulácie so vstupnými prúdmi. Môžete tiež použiť sed na odstránenie nežiaducich znakov z reťazcov.
Na demonštračné účely použijeme ukážkový reťazec a potom ho pripojíme k príkazu sed.
Odstráňte konkrétny znak z reťazca
Pomocou programu sed môžete odstrániť konkrétny znak z reťazca. Napríklad na odstránenie znaku „h“ z reťazca „Ahoj ako sa máš?”Príkaz by bol:
$ echo "ahoj, ako sa máš??"| sed 's / h //'Týmto sa odstráni iba prvý výskyt znaku „h“ v reťazci.
Ak chcete z reťazca odstrániť všetky výskyty reťazca „h“, použite nasledujúci príkaz:
Kde g je skratka pre global. Odstráni všetky výskyty reťazca „h“ v reťazci.
Odstráňte prvý znak z reťazca
Odstránenie prvého znaku z reťazca „Ahoj ako sa máš?“ príkaz by bol:
$ echo "ahoj, ako sa máš??"| sed '/ ^.// 'súborKde (.) sa zhoduje presne s jedným znakom a (^) sa zhoduje s ľubovoľným znakom na začiatku reťazca.
Odstrániť posledný znak z reťazca
Odstránenie posledného znaku z reťazca „Ahoj ako sa máš?“ príkaz by bol:
$ echo "ahoj, ako sa máš??"| sed /.$ // 'Kde (.) sa zhoduje presne s jedným znakom a ($) sa zhoduje s ľubovoľným znakom na konci reťazca.
Odstrániť prvý a posledný znak z reťazca
Odstránenie prvého a posledného znaku z reťazca “Ahoj ako sa máš?“ príkaz by bol:
$ echo "ahoj, ako sa máš??"| sed '/ ^.//; s /.$ // '
Odstráňte znaky z reťazca pomocou awk
Awk je výkonný skriptovací jazyk používaný na porovnávanie vzorov spolu so spracovaním textu. Awk umožňuje filtrovať a transformovať text rôznymi spôsobmi. Môžete tiež použiť awk na odstránenie znakov z reťazcov.
Na demonštračné účely použijeme ukážkový reťazec a potom ho odošleme potrubím na príkaz awk.
Odstráňte prvý znak z reťazca
Odstránenie prvého znaku z reťazca „Ahoj ako sa máš?“ príkaz by bol:
$ echo "ahoj, ako sa máš??"| awk 'print substr ($ 0, 2)'Kde ($ 0) je celý cieľový reťazec a (2) je začiatočná pozícia znaku. Vyššie uvedený príkaz odstráni prvý znak „h“, číslo znaku „1“ a vráti cieľový reťazec začínajúci druhým znakom, „e“.„
Odstráňte prvé dve postavy z reťazca
Môžete tiež odstrániť konkrétny počet znakov zo začiatku reťazca. Napríklad na odstránenie prvých dvoch znakov z reťazca „Ahoj ako sa máš?“ príkaz by bol:
$ echo "ahoj, ako sa máš??"| awk 'print substr ($ 0, 3)'Vyššie uvedený príkaz odstráni prvé dva znaky „he“ alebo čísla znakov „1 a 2“ a vráti cieľový reťazec začínajúci číslom znaku „3“ alebo „l.„
Odstrániť posledný znak z reťazca
Odstránenie posledného znaku z „Ahoj ako sa máš?“ príkaz by bol:
$ echo "ahoj, ako sa máš??"| awk 'print substr ($ 0, 1, dĺžka ($ 0) -1)'Kde dĺžka ($ 0) -1 znamená odpočítanie “1'z celkovej dĺžky znaku.
Vyššie uvedený príkaz vytlačí reťazec začínajúci číslom znaku '1„až dĺžka ($ 0) -1 vyzliecť posledný znak.
Existujú '19'znaky (vrátane medzier) vo vyššie uvedenom reťazci. Príkaz bude fungovať vytlačením všetkých znakov, počnúc znakom '1„a až po charakter“18,„pri odstraňovaní posledného znaku“19.„
Odstrániť posledné dve postavy z reťazca
Odstránenie posledných dvoch znakov z „Ahoj ako sa máš?”Príkaz by bol:
$ echo "ahoj, ako sa máš??"| awk 'print substr ($ 0, 1, dĺžka ($ 0) -2)'Kde dĺžka ($ 0) -2 znamená odpočítanie “2'z celkovej dĺžky znaku.
Vyššie uvedený príkaz vytlačí reťazec začínajúci číslom znaku '1„a do počtu znakov“dĺžka ($ 0) -2,', aby sa odstránili posledné dva znaky v reťazci.
Odstráňte prvé aj posledné znaky z reťazca
Odstránenie prvého aj posledného znaku z reťazca “Ahoj ako sa máš?“ príkaz by bol:
$ echo "ahoj, ako sa máš??"| awk 'print substr ($ 0, 2, dĺžka ($ 0) - 2)'Kde dĺžka ($ 0) -2 znamená odpočítanie “2'z celkovej dĺžky znaku.
Vyššie uvedený príkaz vytlačí reťazec začínajúci číslom znaku '2„do počtu znakov“dĺžka ($ 0) -2,'na odstránenie prvého a posledného znaku.
Odstráňte znak z reťazca pomocou rezu
Vystrihnúť je nástroj príkazového riadku, ktorý sa bežne používa na extrahovanie časti textu z reťazca alebo súboru a vytlačenie výsledku na štandardný výstup. Tento príkaz môžete tiež použiť na odstránenie znakov z reťazca.
Na demonštračné účely použijeme ukážkový reťazec a potom ho pripojíme k príkazu cut.
Odstráňte prvý znak z reťazca
Ak chcete z reťazca odstrániť prvý znak, “Ahoj ako sa máš?“ príkaz by bol:
$ echo "ahoj, ako sa máš??"| rez -c 2-Tento príkaz vytlačí reťazec začínajúci druhým znakom a zároveň odstráni prvý znak.
Odstráňte prvé štyri znaky z reťazca
Odstránenie prvých štyroch znakov z reťazca “Ahoj ako sa máš?“ príkaz by bol:
$ echo "ahoj, ako sa máš??"| rez -c 5-Tento príkaz vytlačí reťazec začínajúci od piateho znaku a zároveň odstráni prvé štyri znaky.
Tlač reťazca medzi 2. a 5. znakom
Ak chcete vytlačiť reťazec “Ahoj ako sa máš?“ medzi druhým a piatym znakom, príkaz by bol:
$ echo "ahoj, ako sa máš??"| rez -c 2-5Tento príkaz vytlačí reťazec začínajúci od druhého znaku až po piaty znak, pričom odstráni zvyšné začiatočné a koncové znaky.
Odstrániť posledný znak z reťazca
Odstránenie posledného znaku z reťazca „Ahoj ako sa máš?“ Použi strihať veliť s rev, nasledovne:
$ echo "ahoj, ako sa máš??"| rev | rez -c2- | revTento príkaz funguje tak, že najskôr obrátite reťazec, potom vyrežete prvý znak a nakoniec ho opäť obrátite, aby ste dosiahli požadovaný výstup.
Odstrániť posledné štyri znaky z reťazca
Ak chcete odstrániť posledné štyri znaky z riadku „Ahoj ako sa máš?“ príkaz by bol:
$ echo "ahoj, ako sa máš??"| rev | rez -c5- | revTento príkaz funguje tak, že najskôr obrátite reťazec, potom vystrihnete prvé štyri znaky a potom ho opäť obrátite, aby ste získali požadovaný výstup.
Odstrániť prvé a posledné znaky z reťazca
Odstránenie prvého a posledného znaku z reťazca “Ahoj ako sa máš?“ Použi strihať veliť s rev, nasledovne:
$ echo "ahoj svet!"| cut -c2- | rev | cut -c2- | revTento príkaz funguje tak, že vyrežete prvý znak, potom obrátite reťazec a vyrežete jeho prvý znak, a potom ho opäť obrátite, aby ste dosiahli požadovaný výstup.
Odstráňte znak z reťazca pomocou tr
Príkaz tr (skratka pre preklad) sa používa na preklad, stlačenie a odstránenie znakov z reťazca. Môžete tiež použiť tr na odstránenie znakov z reťazca.
Na demonštračné účely použijeme ukážkový reťazec a potom ho pripojíme k príkazu tr.
Odstrániť všetky výskyty znakov
Pomocou príkazu tr môžete z reťazca odstrániť všetky výskyty malých a veľkých písmen. Napríklad, ak chcete z reťazca odstrániť všetky výskyty malého písmena „h“, bude to príkaz:
$ echo „Dobrý deň, ako sa máte?"| tr -d h
Podobne, aby sa z reťazca odstránili všetky výskyty veľkého písmena „H“, príkaz by bol:
$ echo „Dobrý deň, ako sa máte?"| tr -d HMôžete tiež použiť interpretované sekvencie na odstránenie malých alebo veľkých písmen:
$ echo „Dobrý deň, ako sa máte?"| tr -d [: horná:]$ echo "Ahoj, ako sa máš?"| tr -d [: nižšie:]
Odstrániť všetky výskyty malých a veľkých znakov
Z reťazca môžete tiež odstrániť všetky výskyty malých aj veľkých znakov. Napríklad nasledujúci príkaz odstráni všetky výskyty znaku „h“, malé aj veľké.
$ echo „Dobrý deň, ako sa máte?"| tr -d 'hH'
Odstrániť všetky výskyty znakov v konkrétnom rozsahu
Ak chcete z reťazca v konkrétnom rozsahu 'd-h' odstrániť všetky výskyty znakov, príkaz by bol:
$ echo "ahoj, ako sa máš??"| tr -d 'd-h'Tento príkaz odstráni všetky znaky z rozsahu 'd-h' (d, e, f, g, h) v reťazci.
Záver
V systéme Linux bude vždy k dispozícii viac ako jeden spôsob, ako dosiahnuť jednoduchú prácu. To isté platí pre odstraňovanie znakov z reťazca. Tento článok vám ukázal štyri rôzne spôsoby, ako to urobiť, spolu s niekoľkými príkladmi odstránenia nechcených znakov z reťazca. Rozhodovanie o tom, ktorý nástroj použijete, závisí od vašich preferencií a hlavne od toho, čo chcete dosiahnuť.