Programovanie v jazyku BASH

Odstraňovanie znakov z reťazca v Bashi

Odstraňovanie znakov z reťazca v Bashi

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:

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:

$ echo "ahoj, ako sa máš??"| sed 's / h // g'

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úbor

Kde (.) 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-5

Tento 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- | rev

Tento 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- | rev

Tento 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- | rev

Tento 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 H

Môž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ť.

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...
S ovládaním pomocou myši X-Mouse môžete tlačidlá myši premapovať odlišne pre iný softvér
Možno budete potrebovať nástroj, ktorý by mohol zmeniť ovládanie myši pri každej aplikácii, ktorú používate. Ak je to váš prípad, môžete vyskúšať apli...
Recenzia bezdrôtovej myši Microsoft Sculpt Touch
Nedávno som čítal o Microsoft Sculpt Touch bezdrôtová myš a rozhodol sa ju kúpiť. Po chvíli používania som sa rozhodol s ním podeliť o svoje skúsenost...