Bash Odstraňte z řetězce posledních x znaků

Bash Remove Last X Characters From String



Někdy může být nutné odstranit písmena z libovolného řetězce. V každém případě Linux obsahuje několik vestavěných užitečných nástrojů pro odstraňování písmen z takového textu v Bash. Tento článek ukazuje, jak pomocí těchto metod odstranit písmena z libovolného řetězce. V tomto příspěvku byly pokyny spuštěny na Ubuntu 20.04 Focal Fossa. Stejné pokyny lze spustit na jakémkoli systému Linux, ve kterém jsou nainstalovány výše uvedené nástroje. K provedení pokynů použijeme obvyklý terminál. Zkratka Ctrl+Alt+T otevře nástroj Terminál.

Metoda 01: Substring Way

Naše první metoda pro odstranění písmen nebo znaků z řetězce je spíše jako vytvoření podřetězce z původního. Mezitím byl terminál již otevřen; vytvoříme bash soubor pro přidání našeho bash kódu. Abychom v něm mohli provádět odstraňování znaků nebo vytváření podřetězců. K vytvoření souboru bash jsme tedy použili vestavěnou dotykovou instrukci v našem shellu.









Protože byl soubor rychle vygenerován v domovské složce Ubuntu 20.04, otevřete jej v nějakém editoru a upravte. Takže pro otevření souboru file.sh zvolíme editor GNU, jak je uvedeno níže.







Zkopírujte níže uvedený kód. Tento kód obsahuje na začátku rozšíření bash a poté jsme deklarovali řetězcovou proměnnou val s řetězcovou hodnotou. Na druhém řádku použijeme frázi echo k zobrazení této proměnné v terminálu. Odtud začíná skutečný úkol. Inicializovali jsme novou proměnnou a přiřadili jí hodnotu, která je podřetězcem původní proměnné val. Dokázali jsme to uvedením -14 v závorkách za dvojtečkami. To říká kompilátoru, že musí odstranit posledních 14 písmen z původního řetězce FirstWorldCountries. Zbývající písmena budou uložena do proměnné new. V posledním řádku byla ozvěna použita k tisku nové proměnné new.



Správné spuštění souboru file.sh pomocí příkazu bash vychází podle očekávání. Za prvé, zobrazí hodnotu první řetězcové proměnné val a poté zobrazí hodnotu nově vytvořeného řetězce z první proměnné podle zobrazeného výstupu.

Metoda 02: Použití speciálních symbolů

Další jednoduchá a snadnější metoda, jak odstranit poslední písmena nebo znaky z libovolného řetězce, je pomocí speciálních symbolů nebo znaků, například symbolů procenta a otazníku. Tentokrát tedy použijeme procenta a otazníky k odstranění znaků z libovolného řetězce. Proto jsme již otevřeli stejný soubor pro aktualizaci skriptu bash pomocí editoru GNU Nano. Celkový kód je stejný, ale variabilní nová část je trochu odlišná. Použili jsme znak procenta, abychom systému oznámili, že uvedené počty otazníků představují počet znaků z proměnné val, která má být po tomto procentuálním znaku odstraněna. Můžete vidět, že jsme přidali 9 symbolů otazníků. To znamená, že bude odstraněno posledních 9 znaků z řetězce FirstWorldCountries a zbývající řetězec bude FirstWorld. Tento zbývající řetězec bude poté uložen do proměnné new.

Když jsme provedli aktualizovaný soubor bash, výstup přijde podle očekávání. Ukazuje původní řetězec z první proměnné a hodnotu druhé proměnné, nové, která byla vytvořena z proměnné val.

Metoda 03: Použití Sed

Sed je užitečný a účinný nástroj pro změnu sekvencí textu. Jedná se o neinteraktivní vývojové prostředí, které vám umožní pracovat se zadáváním dat a provádět jednoduché textové transformace. Můžete také použít sed k odstranění písmen z textů, které nechcete. Pro ilustraci použijeme příkladový řetězec a nasměrujeme jej do příkazu sed. Můžete odstranit konkrétní znak z nějakého řetězce se sed. V příkazu echo jsme tedy použili jednoduchý řádek řetězce. Použili jsme sed k odstranění písmene A ze zmíněného řetězce. Dodržujte syntaxi ‘s/string_to_be_removed //’. Výstup ukazuje, že písmeno A bylo odstraněno.

Abychom odstranili celé slovo Aqsa, zmínili jsme první a poslední znak slova s ​​tečkami uvnitř, které představují chybějící písmena. Výstup ukazuje řetězec s odstraněním slova Aqsa.

Chcete -li z řetězce odebrat libovolný počet posledních znaků, uveďte před zobrazením symbolu dolaru počet teček podle vašeho požadavku.

Metoda 04: Použití Awk

Awk je propracovaný skriptovací jazyk, který lze použít k párování vzorů a zpracování textů. Awk můžete použít k posunu a úpravě vstupu různými způsoby. Písmena z řetězců můžete také odstranit pomocí awk. Awk se zdá trochu odlišný od sed. Tentokrát jsme změnili řetězec pomocí Aqsa Yasin. Funkce awk vytvoří podřetězec metodou substr a vytiskne jej v terminálu. Délka funkce byla použita k demonstraci počtu písmen odstraněných ze zmíněného řetězce. Zde délka ($ 0) -5 znamená odebrání posledních 5 znaků řetězce a zbývající bude součástí podřetězce, který se má vytisknout.

Pokusili jsme se odstranit posledních 9 znaků z řetězce Aqsa Yasin a dostali jsme A jako výstupní podřetězec.

Metoda 05: Použití Cut

Vyjmutí se zdá být nástrojem příkazového řádku pro extrahování části textu z takové fráze nebo dokumentu a jeho tisk na standardní výstup. Tuto operaci lze také použít k odebrání písmen z nějakého druhu řetězce. Použijeme ukázkovou frázi a předáme ji instrukci cut pro účely testování. Použili jsme tedy frázi Aqsa Yasin a předali ji řeznému dotazu. Po příznaku –c jsme definovali rozsah indexů pro řetězec, který má vyjmout znaky ze zmíněného řetězce. Zobrazí znaky z indexu 1 do indexu 5. Index 5 zde byl vyloučen. Výstup ukazuje první 4 znaky jako Aqsa.

Tentokrát použijeme instrukci střihu jinak. K obrácení řetězce jsme použili funkci rev. Po převrácení řetězce vyřízneme první znak z řetězce. Příznak -c2 -znamená, že naším podřetězcem bude další znak 2. Poté se funkce zpět použije k vrácení řetězce. Takže tentokrát jsme dostali původní řetězec zpět s odstraněním posledního znaku.

Chcete -li odstranit posledních 7 znaků, stačí zmínit -c7 -v příkazu cut při použití funkce zpět.

Závěr:

V Linuxu existuje více než jedna metoda k provedení základního úkolu. Podobně je možné mazání znaků z textu. Tento článek předvedl pět odlišných metod pro odstranění nežádoucích znaků z řetězce a také některé instance. Jakýkoli nástroj si vyberete, je zcela závislý na vašem výběru a co je důležitější, čeho chcete dosáhnout.