GNU/Linux >> Znalost Linux >  >> Linux

Bash Beginner Series #6:Řetězcové operace v Bash

Pojďme manipulovat s některými řetězci!

Pokud jste obeznámeni s proměnnými v bash, již víte, že neexistují žádné samostatné datové typy pro string, int atd. Všechno je proměnná.

To však neznamená, že nemáte funkce pro manipulaci s řetězci.

V předchozí kapitole jste se naučili aritmetické operátory v Bash. V této kapitole se naučíte, jak manipulovat s řetězci pomocí různých operací s řetězci. Dozvíte se, jak získat délku řetězce, zřetězit řetězce, extrahovat podřetězce, nahradit podřetězce a mnoho dalšího!

Získat délku řetězce

Začněme získáním délky řetězce v bash.

Řetězec není nic jiného než sekvence (pole) znaků. Vytvořme řetězec s názvem distro a inicializujte jeho hodnotu na „Ubuntu “.

distro="Ubuntu"

Nyní, abyste získali délku řetězce distribuce, stačí přidat # před názvem proměnné. Můžete použít následující příkaz echo:

[email protected]:~/scripts$ echo ${#distro}
6

Pamatujte, že příkaz echo slouží k vytištění hodnoty. {#string} je to, co udává délku řetězce.

Zřetězení dvou řetězců

Řetězec můžete připojit na konec jiného řetězce; tento proces se nazývá řetězení řetězců.

Pro demonstraci nejprve vytvořte dva řetězce str1 astr2 takto:

str1="hand"
str2="book"

Nyní můžete oba řetězce spojit a výsledek přiřadit novému řetězci s názvem str3 takto:

str3=$str1$str2

Jednodušší to už být nemůže, že?

Hledání podřetězců


Můžete najít pozici (index) konkrétního písmena nebo slova v řetězci. Pro demonstraci nejprve vytvořte řetězec s názvem str takto:

str="Bash is Cool"

Nyní můžete získat konkrétní pozici (index) podřetězce v pohodě. K tomu použijte expr příkaz:

[email protected]:~/scripts$ word="Cool"
[email protected]:~/scripts$ expr index "$str" "$word"
9

Výsledkem 9 je index, kde slovo „Cool“ začíná v str řetězec.

Záměrně se vyhýbám používání podmíněných příkazů, jako je if, jinak, protože v této sérii bash pro začátečníky budou podmíněné příkazy popsány později.

Extrahování podřetězců

Můžete také extrahovat podřetězce z řetězce; to znamená, že z řetězce můžete extrahovat písmeno, slovo nebo několik slov.

Pro demonstraci nejprve vytvořte řetězec s názvem foss takto:

foss="Fedora is a free operating system"

Nyní řekněme, že chcete extrahovat první slovo „Fedora“ v foss tětiva. Musíte zadat počáteční pozici (index) požadovaného podřetězce a počet znaků, které potřebujete extrahovat.

Proto pro extrakci podřetězce „Fedora“ použijete jako výchozí pozici 0 a z výchozí pozice vyjmete 6 znaků:

[email protected]:~/scripts$ echo ${foss:0:6}
Fedora

Všimněte si, že první pozice v řetězci je nula, stejně jako v případě polí v bash. Můžete také zadat pouze počáteční pozici podřetězce a vynechat počet znaků. V tomto případě bude extrahováno vše od počáteční pozice do konce řetězce.

Chcete-li například extrahovat podřetězec „volný operační systém“ z foss tětiva; potřebujeme pouze určit počáteční pozici 12:

[email protected]:~/scripts$ echo ${foss:12}
free operating system

Nahrazení podřetězců

Můžete také nahradit podřetězec jiným podřetězcem; například můžete nahradit „Fedora“ za „Ubuntu“ v foss řetězec takto:

[email protected]:~/scripts$ echo ${foss/Fedora/Ubuntu}
Ubuntu is a free operating system

Udělejme další příklad, nahradíme podřetězec „zdarma“ za „populární“:

[email protected]:~/scripts$ echo ${foss/free/popular}
Fedora is a popular operating system

Protože právě tisknete hodnotu pomocí příkazu echo, původní řetězec se skutečně nezmění.

Mazání podřetězců

Můžete také odstranit podřetězce. Pro demonstraci nejprve vytvořte řetězec s názvem fact takto:

fact="Sun is a big star"

Nyní můžete odstranit podřetězec „velký“ z faktu řetězce:

[email protected]:~/scripts$ echo ${fact/big}
Sun is a star

Vytvořme další řetězec s názvem cell:

cell="112-358-1321"

Nyní řekněme, že chcete odstranit všechny pomlčky z buňky tětiva; následující příkaz odstraní pouze první výskyt pomlčky v buňce řetězec:

[email protected]:~/scripts$ echo ${cell/-}
112358-1321

Chcete-li odstranit všechny výskyty pomlček z buňky řetězec, musíte použít dvojitá lomítka následovně:

[email protected]:~/scripts$ echo ${cell//-}
1123581321

Všimněte si, že používáte příkazy echo, takže řetězec buňky je neporušený a nezměněný; právě zobrazujete požadovaný výsledek!

Chcete-li řetězec upravit, musíte výsledek přiřadit zpět k řetězci následovně:

[email protected]:~/scripts$ echo $cell
112-358-1321
[email protected]:~/scripts$ cell=${cell//-}
[email protected]:~/scripts$ echo $cell
1123581321

Převod velkých a malých písmen v řetězci

Řetězec můžete také převést na malá nebo velká písmena. Nejprve vytvořte dva řetězce s názvem legend a herec:

legend="john nash"
actor="JULIA ROBERTS"

Všechna písmena v legendě můžete převést řetězec na velká písmena:

[email protected]:~/scripts$ echo ${legend^^}
JOHN NASH

Můžete také převést všechna písmena v řetězci aktérů na malá písmena:

[email protected]:~/scripts$ echo ${actor,,}
julia roberts

Můžete také převést pouze první znak legendy řetězec na velká písmena takto:

[email protected]:~/scripts$ echo ${legend^}
John nash

Podobně můžete převést pouze první znak herce řetězec na malá písmena takto:

[email protected]:~/scripts$ echo ${actor,}
jULIA ROBERTS

Můžete také změnit určité znaky v řetězci na velká nebo malá písmena; můžete například změnit písmena j a n na velká písmena v legendě řetězec takto:

[email protected]:~/scripts$ echo ${legend^^[jn]}
JohN Nash

Úžasný! Tím se dostáváme na konec tohoto tutoriálu v sérii bash pro začátečníky. Stáhněte si níže uvedený soubor PDF a procvičte si, co jste se právě naučili.

Bash Kapitola 6 Cvičné otázkyProblémy a jejich řešení k procvičení toho, co jste se právě naučili v této kapitole Bash-Kapitola-6-Procvičení-otázek-Linux-Příručka.pdf28 KB

Doufám, že se vám manipulace s řetězci v bash líbila a podívejte se na další kapitolu, kde se naučíte, jak přidat rozhodovací schopnosti do vašich bash skriptů!


Linux
  1. Provádění operací atomového zápisu v souboru v Bash?

  2. Jak rozdělit řetězec ve skriptu Bash

  3. pomocí náhodného vygenerování náhodného řetězce v bash

  1. Bash Beginner Series #9:Použití funkcí v Bash

  2. Bash Beginner Series #8:Loops in Bash

  3. Převeďte textový řetězec v bash na pole

  1. Vysvětlení matematických operací Bash (aritmetika Bash).

  2. Řetězce Bash Concatenate

  3. Co dělá 'bash -c'?