GNU/Linux >> Linux Esercitazione >  >> Linux

Bash Beginner Series #6:Operazioni con le stringhe in Bash

Manifichiamo alcune stringhe!

Se hai familiarità con le variabili in bash, sai già che non esistono tipi di dati separati per string, int ecc. Tutto è una variabile.

Ma questo non significa che non hai funzioni di manipolazione delle stringhe.

Nel capitolo precedente, hai imparato gli operatori aritmetici in Bash. In questo capitolo imparerai come manipolare le stringhe usando una varietà di operazioni sulle stringhe. Imparerai come ottenere la lunghezza di una stringa, concatenare stringhe, estrarre sottostringhe, sostituire sottostringhe e molto altro!

Ottieni la lunghezza della stringa

Iniziamo con l'ottenere la lunghezza di una stringa in bash.

Una stringa non è altro che una sequenza (array) di caratteri. Creiamo una stringa denominata distro e inizializza il suo valore su "Ubuntu ”.

distro="Ubuntu"

Ora per ottenere la lunghezza della stringa di distribuzione, devi solo aggiungere # prima del nome della variabile. È possibile utilizzare la seguente istruzione echo:

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

Si noti che il comando echo serve per stampare il valore. {#string} è ciò che dà la lunghezza della stringa.

Concatenazione di due stringhe

Puoi aggiungere una stringa alla fine di un'altra stringa; questo processo è chiamato concatenazione di stringhe.

Per dimostrare, creiamo prima due stringhe str1 e str2 come segue:

str1="hand"
str2="book"

Ora puoi unire entrambe le stringhe e assegnare il risultato a una nuova stringa denominata str3 come segue:

str3=$str1$str2

Non può essere più semplice di così, vero?

Trovare sottostringhe


Puoi trovare la posizione (indice) di una specifica lettera o parola in una stringa. Per dimostrare, creiamo prima una stringa denominata str come segue:

str="Bash is Cool"

Ora puoi ottenere la posizione specifica (indice) della sottostringa cool. Per farlo, usa expr comando:

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

Il risultato 9 è l'indice in cui la parola "Cool" inizia nella str stringa.

Sto deliberatamente evitando di usare istruzioni condizionali come se, altrimenti perché in questa serie per principianti di bash, le istruzioni condizionali saranno trattate in seguito.

Estrazione di sottostringhe

Puoi anche estrarre sottostringhe da una stringa; vale a dire, puoi estrarre una lettera, una parola o alcune parole da una stringa.

Per dimostrare, creiamo prima una stringa denominata foss come segue:

foss="Fedora is a free operating system"

Ora supponiamo che tu voglia estrarre la prima parola "Fedora" nel foss corda. È necessario specificare la posizione iniziale (indice) della sottostringa desiderata e il numero di caratteri da estrarre.

Pertanto, per estrarre la sottostringa “Fedora”, utilizzerai 0 come posizione di partenza ed estrarrai 6 caratteri dalla posizione di partenza:

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

Si noti che la prima posizione in una stringa è zero, proprio come nel caso degli array in bash. Puoi anche specificare solo la posizione iniziale di una sottostringa e omettere il numero di caratteri. In questo caso verrà estratto tutto dalla posizione di partenza alla fine della stringa.

Ad esempio, per estrarre la sottostringa "sistema operativo libero" da foss corda; dobbiamo solo specificare la posizione iniziale 12:

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

Sostituzione di sottostringhe

Puoi anche sostituire una sottostringa con un'altra sottostringa; ad esempio, puoi sostituire "Fedora" con "Ubuntu" nel foss stringa come segue:

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

Facciamo un altro esempio, sostituiamo la sottostringa “free” con “popular”:

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

Dal momento che stai solo stampando il valore con il comando echo, la stringa originale non viene modificata.

Eliminazione di sottostringhe

Puoi anche rimuovere le sottostringhe. Per dimostrare, creiamo prima una stringa denominata fact come segue:

fact="Sun is a big star"

Ora puoi rimuovere la sottostringa "big" dalla stringa fact:

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

Creiamo un'altra stringa denominata cell:

cell="112-358-1321"

Supponiamo ora di voler rimuovere tutti i trattini dalla cella corda; la seguente istruzione rimuoverà solo la prima occorrenza del trattino nella cella stringa:

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

Per rimuovere tutte le occorrenze di trattino dalla cella string, devi usare le doppie barre come segue:

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

Nota che stai usando le istruzioni echo e quindi la stringa di cella è intatta e non modificata; stai solo visualizzando il risultato desiderato!

Per modificare la stringa, è necessario riassegnare il risultato alla stringa come segue:

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

Conversione di lettere maiuscole e minuscole in una stringa

Puoi anche convertire una stringa in lettere minuscole o maiuscole. Per prima cosa creiamo due stringhe denominate leggenda e attore:

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

Puoi convertire tutte le lettere nella leggenda stringa in maiuscolo:

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

Puoi anche convertire tutte le lettere nella stringa attore in minuscolo:

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

Puoi anche convertire solo il primo carattere della leggenda stringa in maiuscolo come segue:

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

Allo stesso modo, puoi convertire solo il primo carattere dell'attore stringa in minuscolo come segue:

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

Puoi anche cambiare alcuni caratteri in una stringa in maiuscolo o minuscolo; ad esempio, puoi cambiare le lettere j e n in maiuscolo nella leggenda stringa come segue:

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

Eccezionale! Questo ci porta alla fine di questo tutorial nella serie per principianti di bash. Scarica il PDF qui sotto e metti in pratica ciò che hai appena imparato.

Bash Capitolo 6 Domande pratiche Problemi e la loro soluzione per mettere in pratica ciò che hai appena appreso in questo capitolo Bash-Capitolo-6-Domande pratiche-Linux-Handbook.pdf28 KB

Spero che ti sia piaciuto fare la manipolazione delle stringhe in bash e dai un'occhiata al prossimo capitolo mentre imparerai come aggiungere abilità decisionali ai tuoi script bash!


Linux
  1. Eseguire operazioni di scrittura atomica in un file in Bash?

  2. Bash Beginner Series #9:Utilizzo delle funzioni in Bash

  3. Bash Beginner Series #8:Loop in Bash

  4. Converti una stringa di testo in bash in array

  5. Cosa fa 'bash -c'?

Bash Beginner Series n. 1:crea ed esegui il tuo primo script Bash Shell

Bash Beginner Series #5:Utilizzo di operatori aritmetici negli script Bash

Bash Beginner Series #4:Utilizzo di array in Bash

Bash Beginner Series #3:Passare argomenti agli script Bash

Bash Beginner Series #7:Decision Making With If Else e Case Statements

Bash Beginner Series #10:Automazione con Bash