Odstránenie znakov z reťazca v Bash

Removing Characters From String Bash



Niekedy môže byť potrebné odstrániť znaky z reťazca. Nech už je dôvod akýkoľvek, Linux vám ponúka rôzne vstavané praktické nástroje, ktoré vám umožňujú odstrániť znaky z reťazca v Bash. Tento článok ukazuje, ako použiť tieto nástroje na odstránenie znakov z reťazca.

Tento článok popisuje, ako vykonať nasledujúce:







  • Odstráňte znak z reťazca pomocou sed
  • Odstráňte znak z reťazca pomocou awk
  • Odstráňte znak z reťazca pomocou vystrihnúť
  • Odstráňte znak z reťazca pomocou tr

Príkazy uvedené v tomto článku boli vykonané v Ubuntu 20.04 Focal Fossa. Rovnaké príkazy je možné vykonať aj v iných distribúciách Linuxu, ktoré majú k dispozícii vyššie uvedené nástroje. Na spustenie príkazov použijeme predvolenú aplikáciu Terminal. Do aplikácie Terminal sa dostanete pomocou klávesovej skratky Ctrl+Alt+T.



Odstráňte znaky z reťazca pomocou sed

Sed je výkonný a praktický nástroj používaný na úpravu tokov textu. Je to neinteraktívny textový editor, ktorý vám umožňuje vykonávať základné textové manipulácie so vstupnými tokmi. Sed môžete tiež použiť na odstránenie nechcených znakov z reťazcov.



Na demonštračné účely použijeme vzorový reťazec a potom ho vložíme do príkazu sed.





Odstráňte konkrétny znak z reťazca

Pomocou sed môžete z reťazca odstrániť konkrétny znak. Napríklad na odstránenie h z reťazca Ahoj ako sa máš? príkaz by bol:

$zahodil 'Ahoj ako sa máš?' | sed 's/h //'

Týmto sa odstráni iba prvý výskyt „h“ v reťazci.
Odstráňte konkrétny znak z reťazca 1
Ak chcete z reťazca odstrániť všetky výskyty písmena „h“, použite nasledujúci príkaz:



$zahodil 'Ahoj ako sa máš?' | sed 's/h // g'

Kde g znamená globálne. Odstráni všetok výskyt „h“ v reťazci.
Odstráňte konkrétny znak z reťazca 2

Odstráňte prvý znak z reťazca

Odstráni prvý znak z reťazca Ahoj ako sa máš? príkaz by bol:

$zahodil 'Ahoj ako sa máš?' | sed 's /^.//' súbor

Kde (.) Sa zhoduje presne s jedným znakom a (^) sa zhoduje s akýmkoľvek znakom na začiatku reťazca.
Odstráňte prvý znak z reťazca

Odstráňte posledný znak z reťazca

Odstráni posledný znak z reťazca Ahoj ako sa máš? príkaz by bol:

$zahodil 'Ahoj ako sa máš?' | sed 's /.$//'

Kde ( . ) sa zhoduje presne s jedným znakom a ($) sa zhoduje s akýmkoľvek znakom na konci reťazca.
Odstráňte posledný znak z reťazca

Odstráňte prvý a posledný znak z reťazca

Odstráni prvý a posledný znak z reťazca Ahoj ako sa máš? príkaz by bol:

$zahodil 'Ahoj ako sa máš?' | sed 's/^.//;s/.$//'

Odstráňte prvý a posledný znak z reťazca

Odstráňte znaky z reťazca pomocou awk

Awk je výkonný skriptovací jazyk používaný na párovanie vzorov spolu so spracovaním textu. Awk vám umožňuje filtrovať a transformovať text rôznymi spôsobmi. Na odstránenie znakov z reťazcov môžete použiť aj awk.

Na demonštračné účely použijeme vzorový reťazec a potom ho vložíme do príkazu awk.

Odstráňte prvý znak z reťazca

Odstráni prvý znak z reťazca Ahoj ako sa máš? príkaz by bol:

$zahodil 'Ahoj ako sa máš?' | awk '{print substr ($ 0, 2)}'

Kde ($ 0) je celý cieľový reťazec a (2) poč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ý znak z reťazca

Odstráňte prvé dva znaky z reťazca

Zo začiatku reťazca môžete tiež odstrániť určitý počet znakov. Napríklad na odstránenie prvých dvoch znakov z reťazca Ahoj ako sa máš? príkaz by bol:

$zahodil 'Ahoj ako sa máš?' | awk '{print substr ($ 0, 3)}'

Vyššie uvedený príkaz odstráni prvé dva znaky „on“ alebo čísla znakov „1 a 2“ a vráti cieľový reťazec začínajúci sa znakom číslo „3“ alebo „l“.
Odstráňte prvé dva znaky z reťazca

Odstráňte posledný znak z reťazca

Ak chcete odstrániť posledný znak z Ahoj ako sa máš? príkaz by bol:

$zahodil 'Ahoj ako sa máš?' | awk '{print substr ($ 0, 1, length ($ 0) -1)}'

Kde dĺžka (0 dolárov) -1 znamená odpočítať „ 1 “Z celkovej dĺžky znaku.

Vyššie uvedený príkaz vytlačí reťazec začínajúci sa číslom znaku „ 1 ‘Až dĺžka (0 dolárov) -1 vyzliecť poslednú postavu.

Existujú ' 19 '(Vrátane medzier) vo vyššie uvedenom reťazci. Príkaz bude fungovať tak, že vytlačí všetky znaky počnúc znakom „ 1 “A podľa charakteru„ 18 „Pri odstraňovaní posledného znaku“ 19 . ‘

rmv posledný znak frm reťazec

Odstráňte posledné dva znaky z reťazca

Ak chcete odstrániť posledné dva znaky z Ahoj ako sa máš? príkaz by bol:

$zahodil 'Ahoj ako sa máš?' | awk '{print substr ($ 0, 1, length ($ 0) -2)}'

Kde dĺžka (0 dolárov) -2 znamená odpočítať „ 2 “Z celkovej dĺžky znaku.

Vyššie uvedený príkaz vytlačí reťazec začínajúci číslom znaku „ 1 “A do čísla znaku„ dĺžka (0 dolárov) -2 , ‘, Čím odstránite posledné dva znaky v reťazci.
Odstráňte posledné dva znaky z reťazca

Odstráňte prvý aj posledný znak z reťazca

Odstráni prvý aj posledný znak z reťazca Ahoj ako sa máš? príkaz by bol:

$zahodil 'Ahoj ako sa máš?' | awk '{print substr (0, 2 doláre, dĺžka (0 dolárov) - 2)}'

Kde dĺžka (0 dolárov) -2 znamená odpočítať „ 2 “Z celkovej dĺžky znaku.

Vyššie uvedený príkaz vytlačí reťazec začínajúci číslom znaku „ 2 'Až po číslo znaku' dĺžka (0 dolárov) -2 , “, Ak chcete odstrániť prvý a posledný znak.

Odstráňte prvý aj posledný znak z reťazca

Odstráňte znak z reťazca pomocou strihu

Cut je nástroj príkazového riadka, 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 použiť aj na odstránenie znakov z reťazca.

Na demonštračné účely použijeme vzorový reťazec a potom ho vložíme do 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:

$zahodil 'Ahoj ako sa máš?' | rezať -c 2-

Tento príkaz vytlačí reťazec začínajúci druhým znakom a súčasne odstráni prvý znak.
rmv cut -c

Odstráňte prvé štyri znaky z reťazca

Odstráni prvé štyri znaky z reťazca Ahoj ako sa máš? príkaz by bol:

$zahodil 'Ahoj ako sa máš?' | rezať -c 5-

Tento príkaz vytlačí reťazec počnúc piatym znakom a odstráni prvé štyri znaky.
Odstráňte prvé štyri znaky z reťazca

Vytlačte reťazec 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:

$zahodil 'Ahoj ako sa máš?' | rezať -c 2-5

Tento príkaz vytlačí reťazec, začínajúci od druhého znaku až po piaty znak, pričom odstráni zostávajúce začiatočné a koncové znaky.
rmv 2. a 5. c2

Odstráňte posledný znak z reťazca

Odstráni posledný znak z reťazca Ahoj ako sa máš? Použi rezať príkaz s rev , nasledovne:

$zahodil 'Ahoj ako sa máš?' | rev | rezať -c2- | rev

Tento príkaz funguje tak, že najskôr obrátite reťazec, potom vystrihnete prvý znak a nakoniec ho obrátite znova, aby ste získali požadovaný výstup.
02Odstrániť poslednú postavu z reťazca

Odstráňte posledné štyri znaky z reťazca

Odstránenie posledných štyroch znakov z riadka Ahoj ako sa máš? príkaz by bol:

$zahodil 'Ahoj ako sa máš?' | rev | rezať -c5- | rev

Tento príkaz funguje tak, že najskôr obrátite reťazec, potom vystrihnete prvé štyri znaky a potom ho znova obrátite, aby ste získali požadovaný výstup.
rmv posledné štyri znaky

Odstráňte prvý a posledný znak z reťazca

Odstráni prvý a posledný znak z reťazca Ahoj ako sa máš? Použi rezať príkaz s rev , nasledovne:

$zahodil 'ahoj svet!' | rezať -c2- | rev | rezať -c2- |rev

Tento príkaz funguje tak, že odstrihnete prvý znak, potom obrátite reťazec a odrežete jeho prvý znak a potom ho opäť obrátite, aby ste získali požadovaný výstup.
rmv prvý a posledný

Odstráňte znak z reťazca pomocou tr

Príkaz tr (skratka pre preklad) sa používa na preklad, stláčanie a odstraňovanie znakov z reťazca. Na odstránenie znakov z reťazca môžete použiť aj tr.

Na demonštračné účely použijeme vzorový reťazec a potom ho vložíme do príkazu tr.

Odstráňte všetky výskyty znakov

Pomocou príkazu tr môžete z reťazca odstrániť všetky výskyty malých alebo veľkých znakov. Ak napríklad chcete z reťazca odstrániť všetky výskyty malých písmen „h“, príkaz by bol:

$zahodil 'Ahoj ako sa máš?' | NS -dh

odstrániť všetky výskyty 01

Podobne, ak chcete z reťazca odstrániť všetky výskyty veľkých písmen „H“, príkaz by bol:

$zahodil 'Ahoj ako sa máš?' | NS -dH

Interpretované sekvencie môžete použiť aj na odstránenie malých alebo veľkých písmen:

$zahodil 'Ahoj ako sa máš?'| NS -d [: horný:]

výskytov nižšie

$zahodil 'Ahoj ako sa máš?'| NS -d [: nižšie:]

výskyty horné

Odstráňte 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. Nasledujúci príkaz napríklad odstráni všetky výskyty znaku „h“, malé aj veľké písmená.

$zahodil 'Ahoj ako sa máš?' | NS -d„HH“

výskytov horných a dolných

Odstráňte všetky výskyty znakov v konkrétnom rozsahu

Ak chcete odstrániť všetky výskyty znakov z reťazca v konkrétnom rozsahu „d-h“, príkaz by bol:

$zahodil 'Ahoj ako sa máš?' | NS -d 'd-h'

Tento príkaz odstráni v reťazci všetky znaky v rozsahu „d-h“ (d, e, f, g, h).
výskytov špecifický rozsah

Záver

V systéme Linux bude vždy existovať viac ako jeden spôsob, ako vykonať jednoduchú prácu. To isté platí pre odstránenie 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 na odstránenie nechcených znakov z reťazca. Rozhodnutie, ktorý nástroj použijete, závisí od vašich preferencií a, čo je dôležitejšie, od toho, čo chcete dosiahnuť.