Programování BASH

Odebrání znaků z řetězce v Bash

Odebrání znaků z řetězce v Bash

Někdy budete možná muset odstranit znaky z řetězce. Ať už je důvod jakýkoli, Linux vám poskytuje různé vestavěné, praktické nástroje, které vám umožní odstranit znaky z řetězce v Bash. Tento článek ukazuje, jak pomocí těchto nástrojů odstranit znaky z řetězce.

Článek popisuje, jak provést následující:

Příkazy zobrazené v tomto článku byly provedeny v systému Ubuntu 20.04 Focal Fossa. Stejné příkazy lze provádět i na jiných distribucích Linuxu, které mají k dispozici výše uvedené nástroje. Ke spuštění příkazů použijeme výchozí aplikaci Terminál. K aplikaci Terminál můžete přistupovat pomocí klávesové zkratky Ctrl + Alt + T.

Odebrat znaky z řetězce pomocí sed

Sed je výkonný a užitečný nástroj, který se používá k úpravám proudů textu. Jedná se o neinteraktivní textový editor, který umožňuje provádět základní manipulace s textem na vstupních proudech. Můžete také použít sed k odstranění nežádoucích znaků z řetězců.

Pro demonstrační účely použijeme ukázkový řetězec a poté jej připojíme k příkazu sed.

Odebrat konkrétní znak z řetězce

Pomocí sed můžete odstranit určitý znak z řetězce. Například odstranit „h“ z řetězce „Ahoj, jak se máš?„Příkaz by byl:

$ echo "ahoj, jak se máš??"| sed 's / h //'

Tím se odstraní pouze první výskyt 'h' v řetězci.

Chcete-li z řetězce odstranit všechny výskyty 'h', použijte následující příkaz:

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

Kde G znamená globální. Odstraní všechny výskyty 'h' v řetězci.

Odebrat první znak z řetězce

Odebrání prvního znaku z řetězce “Ahoj, jak se máš?“ příkaz by byl:

$ echo "ahoj, jak se máš??"| sed / s.// 'soubor

Kde (.) odpovídá přesně jednomu znaku a (^) odpovídá libovolnému znaku na začátku řetězce.

Odebrat poslední znak z řetězce

Odebrání posledního znaku z řetězce “Ahoj, jak se máš?“ příkaz by byl:

$ echo "ahoj, jak se máš??"| sed /.$ // '

Kde (.) odpovídá přesně jednomu znaku a ($) odpovídá libovolnému znaku na konci řetězce.

Odebrat první a poslední znak z řetězce

Odebrání prvního a posledního znaku z řetězce “Ahoj, jak se máš?“ příkaz by byl:

$ echo "ahoj, jak se máš??"| sed / s.//; s /.$ // '

Odebrat znaky z řetězce pomocí awk

Awk je výkonný skriptovací jazyk používaný pro porovnávání vzorů spolu se zpracováním textu. Awk umožňuje filtrovat a transformovat text různými způsoby. Můžete také použít awk k odstranění znaků z řetězců.

Pro demonstrační účely použijeme ukázkový řetězec a poté jej připojíme k příkazu awk.

Odebrat první znak z řetězce

Odebrání prvního znaku z řetězce “Ahoj, jak se máš?“ příkaz by byl:

$ echo "ahoj, jak se máš??"| awk 'print substr ($ 0, 2)'

Kde ($ 0) je celý cílový řetězec a (2) je počáteční pozice znaků. Výše uvedený příkaz odebere první znak „h“, číslo znaku „1“ a vrátí cílový řetězec začínající druhým znakem, „e.''

Odeberte první dvě postavy z řetězce

Můžete také odebrat určitý počet znaků od začátku řetězce. Například k odebrání prvních dvou znaků z řetězce „Ahoj, jak se máš?“ příkaz by byl:

$ echo "ahoj, jak se máš??"| awk 'print substr ($ 0, 3)'

Výše uvedený příkaz odstraní první dva znaky „he“ nebo čísla znaků „1 a 2“ a vrátí cílový řetězec začínající číslem znaku „3“ nebo „l.''

Odebrat poslední znak z řetězce

Odebrání posledního znaku z „Ahoj, jak se máš?“ příkaz by byl:

$ echo "ahoj, jak se máš??"| awk 'print substr ($ 0, 1, length ($ 0) -1)'

Kde délka ($ 0) -1 znamená odpočet '1'z celkové délky znaků.

Výše uvedený příkaz vytiskne řetězec začínající číslem znaku '1' až do délka ($ 0) -1 odstranit poslední znak.

Existují '19'znaky (včetně mezer) ve výše uvedeném řetězci. Příkaz bude fungovat tiskem všech znaků, počínaje znakem '1„a až po charakter“18,„při odstraňování posledního znaku“19.''

Odebrat poslední dvě postavy z řetězce

Odebrání posledních dvou znaků z „Ahoj, jak se máš?„Příkaz by byl:

$ echo "ahoj, jak se máš??"| awk 'print substr ($ 0, 1, length ($ 0) -2)' '

Kde délka ($ 0) -2 znamená odpočet '2'z celkové délky znaků.

Výše uvedený příkaz vytiskne řetězec počínaje číslem znaku '1„a do počtu znaků“délka ($ 0) -2,'pro odstranění posledních dvou znaků v řetězci.

Odeberte z řetězce první i poslední znak

Odebrání prvního i posledního znaku z řetězce “Ahoj, jak se máš?“ příkaz by byl:

$ echo "ahoj, jak se máš??"| awk 'print substr ($ 0, 2, length ($ 0) - 2)' '

Kde délka ($ 0) -2 znamená odpočet '2'z celkové délky znaků.

Výše uvedený příkaz vytiskne řetězec počínaje číslem znaku '2„až do počtu znaků“délka ($ 0) -2,'odebrat první a poslední znak.

Odstraňte znak z řetězce pomocí řezu

Vyjmout je nástroj příkazového řádku, který se běžně používá k extrakci části textu z řetězce nebo souboru a tisk výsledku na standardní výstup. Tento příkaz můžete také použít k odebrání znaků z řetězce.

Pro demonstrační účely použijeme ukázkový řetězec a poté jej připojíme k příkazu cut.

Odebrat první znak z řetězce

Chcete-li odstranit první znak z řetězce, “Ahoj, jak se máš?“ příkaz by byl:

$ echo "ahoj, jak se máš??"| cut -c 2-

Tento příkaz vytiskne řetězec, počínaje druhým znakem, zatímco odstraní první znak.

Odeberte první čtyři znaky z řetězce

Odebrání prvních čtyř znaků z řetězce “Ahoj, jak se máš?“ příkaz by byl:

$ echo "ahoj, jak se máš??"| cut -c 5-

Tento příkaz vytiskne řetězec začínající od pátého znaku a odstraní první čtyři znaky.

Tisk řetězce mezi 2. a 5. znakem

Tisk řetězce “Ahoj, jak se máš?“ mezi druhým a pátým znakem, příkaz by byl:

$ echo "ahoj, jak se máš??"| cut -c 2-5

Tento příkaz vytiskne řetězec, počínaje od druhého znaku až po pátý znak, přičemž odstraní zbývající počáteční a koncový znak.

Odebrat poslední znak z řetězce

Odebrání posledního znaku z řetězce “Ahoj, jak se máš?“ použijte střih příkaz s rev, jak následuje:

$ echo "ahoj, jak se máš??"| rev | řez -c2- | rev

Tento příkaz funguje tak, že nejprve obrátíte řetězec, poté oříznete první znak a nakonec jej znovu obrátíte, abyste získali požadovaný výstup.

Odebrat poslední čtyři znaky z řetězce

Odebrání posledních čtyř znaků z řádku “Ahoj, jak se máš?“ příkaz by byl:

$ echo "ahoj, jak se máš??"| rev | řez -c5- | rev

Tento příkaz funguje tak, že nejprve obrátíte řetězec, potom oříznete první čtyři znaky a poté jej znovu obrátíte, abyste získali požadovaný výstup.

Odebrat první a poslední znaky z řetězce

Odebrání prvního a posledního znaku z řetězce “Ahoj, jak se máš?“ použijte střih příkaz s rev, jak následuje:

$ echo "ahoj svět!"| cut -c2- | rev | cut -c2- | rev

Tento příkaz funguje tak, že oříznete první znak, poté obrátíte řetězec a oříznete jeho první znak a poté jej znovu obrátíte, abyste získali požadovaný výstup.

Odebrat znak z řetězce pomocí tr

Příkaz tr (zkratka pro překlad) se používá k překladu, mačkání a mazání znaků z řetězce. Můžete také použít tr k odstranění znaků z řetězce.

Pro demonstrační účely použijeme ukázkový řetězec a poté jej připojíme k příkazu tr.

Odebrat všechny výskyty znaků

Pomocí příkazu tr můžete z řetězce odstranit všechny výskyty malých a velkých písmen. Například pro odstranění všech výskytů malého znaku 'h' z řetězce by byl příkaz:

$ echo "Dobrý den, jak se máte?"| tr -d h

Podobně, aby se z řetězce odstranily všechny výskyty velkého znaku 'H', příkaz by byl:

$ echo "Dobrý den, jak se máte?"| tr -d H

Můžete také použít interpretované sekvence k odstranění malých nebo velkých písmen:

$ echo "Dobrý den, jak se máte?"| tr -d [: horní:]

$ echo "Ahoj, jak se máš?"| tr -d [: nižší:]

Odeberte všechny výskyty malých a velkých znaků

Z řetězce můžete také odstranit všechny výskyty malých i velkých znaků. Například následující příkaz odstraní všechny výskyty znaku „h“, malá i velká.

$ echo "Dobrý den, jak se máte?"| tr -d 'hH'

Odeberte všechny výskyty znaků ve specifickém rozsahu

Chcete-li odstranit všechny výskyty znaků z řetězce ve specifickém rozsahu 'd-h,' příkaz by byl:

$ echo "ahoj, jak se máš??"| tr -d 'd-h'

Tento příkaz odstraní všechny znaky v rozsahu 'd-h' (d, e, f, g, h) v řetězci.

Závěr

V Linuxu bude vždy více než jeden způsob, jak dosáhnout jednoduché práce. Totéž platí pro odstraňování znaků z řetězce. Tento článek vám ukázal čtyři různé způsoby, jak to udělat, spolu s několika příklady odebrání nežádoucích znaků z řetězce. Rozhodování o tom, který nástroj použít vše, závisí na vašich preferencích a co je důležitější, na tom, čeho chcete dosáhnout.

Kurzor při psaní v systému Windows 10 skáče nebo se pohybuje náhodně
Pokud zjistíte, že kurzor myši skáče nebo se pohybuje sám, automaticky, náhodně při psaní v notebooku nebo počítači se systémem Windows, pak vám někte...
Jak obrátit směr posouvání myši a touchpadu ve Windows 10
Myš a Touchpadnejenže usnadňují výpočet, ale jsou efektivnější a méně časově náročné. Nemůžeme si představit život bez těchto zařízení, ale přesto je ...
Jak změnit velikost, barvu a schéma kurzoru myši a kurzoru v systému Windows 10
Ukazatel myši a kurzor ve Windows 10 jsou velmi důležité aspekty operačního systému. To lze říci i pro jiné operační systémy, takže ve skutečnosti nej...