Ciò che viene definito sopra come secchi è ciò che chiamiamo variabili nella maggior parte dei linguaggi di programmazione. Inoltre, costruendo sul concetto di base di una variabile, viene introdotto un concetto che chiamiamo digitazione.
La digitazione è un nome per l'archiviazione prevista e il comportamento di assegnazione di una variabile. Quindi, come fa questo aspetto quando torniamo ai secchi?
Nel mondo dei secchi, abbiamo creato per i nostri programmi, i secchi hanno nomi. Questo è tutto.
Supponiamo ora che i nostri programmi non abbiano il lusso di avere un numero infinito di borse Jetson a loro disposizione da usare come secchi. Prima che un secchio venga nominato e pieno del suo contenuto, il programma deve decidere la forma e la costituzione di ogni secchio che tocca. So che sembra un po 'eccessivo ma è un male necessario. Tutti i secchi sono vincolati dal loro tipo.
Come si guarda quando torniamo a Bash?
Funzioni, array e stringhe sono archiviate in variabili. Bash usa ciò che chiamiamo attributi per contrassegnare i cambiamenti nei comportamenti sull'assegnazione. Nonostante ci sia un sistema per modificare il comportamento dell'assegnazione variabile, quando tutto si riduce ad esso, i valori sono archiviati in variabili come stringhe.
In Bash, un programma vive per mettere le stringhe in variabili e nominarle per un uso successivo. Queste stringhe sono disponibili per manipolare per tutta la vita del programma. Il programma vive per manipolare le corde.
Qui copriremo la manipolazione delle stringhe bash nel respiro e il maggior numero possibile di profondità per essere accessibili ai lettori di tutte le marche e forme. Continuare a leggere.
Cos'è la manipolazione delle stringhe in bash
La manipolazione delle stringhe è un'operazione su una stringa che cambia il suo contenuto. In BASH, la manipolazione delle stringhe è disponibile in due forme: manipolazione della stringa di Bash pura e manipolazione delle stringhe tramite comandi esterni. Qui toccheremo entrambi i tipi di manipolazione delle stringhe.
Supponiamo di avere una variabile in bash con una stringa che desideriamo manipolare la stringa denominata. Nel caso in cui esiste più di una stringa, chiamiamo stringhe strings, string2, ... Inoltre, possiamo scegliere di nominare una stringa qualcosa di più significativo della stringa per promuovere la comprensione del contenuto della stringa e l'uso previsto.
Stringhe concatenate - Stringhe di elenco in una stringa
In Bash, il modo semplice per concaterare le stringhe è elencare le stringhe in ordine. La stringa risultante è una nuova stringa contenente tutte le stringhe elencate.
$ String1 $ String2 ..
Esempio: concatenazione stringa elencando stringhe in stringa
string = "one";
string2 = "due";
String3 = $ String $ String2;
echo $ String3
Produzione
uno due
Elencare le stringhe in un array
In Bash, un altro modo per concatenare le stringhe è quello di elencare le stringhe in un array e utilizzare l'espansione dei parametri per espandere l'array nella stringa concatenata. Tuttavia, a differenza dell'esempio sopra, la rimozione di spazi bianchi di separazione degli elementi può richiedere un lavoro extra.
array ($ strings $ strings2…)
Esempio: concatenazione stringa elencando le stringhe in un array
strings = ("one" "due");
echo $ strings [@]
Produzione
uno due
Accorcia una stringa: spostare una stringa a sinistra
Un modo per abbreviare una stringa è spostare il suo contenuto a sinistra. Il contenuto della stringa spostati a sinistra scompare, risultando in una stringa più corta.
Esempio: spostamento del ciclo sinistro
string = "abcdefghijklmnopqrsuvwxyz";
per i in $ (seq 0 $ (($ #string - 1)));
Fare
echo $ string: $ i;
Fatto
Produzione
ABCDEFGHIJKLMNOPQRSTUVWXYZ
bcdefghijklmnopqrstuvwxyz
CDEFGHIJKLMNOPQRSTUVWXYZ
defghijklmnopqrsuvwxyz
efghijklmnopqrsuvwxyz
fghijklmnopqrstuvwxyz
ghijklmnopqrsuvwxyz
hijklmnopqrsuvwxyz
ijklmnopqrsuvwxyz
jklmnopqrsuvwxyz
klmnopqrsuvwxyz
lmnopqrsuvwxyz
mnopqrstuvwxyz
nopqrstuvwxyz
opqrstuvwxyz
pqrstuvwxyz
QRSTUVWXYZ
RStuvwxyz
Stuvwxyz
tuvwxyz
uvwxyz
Vwxyz
W x y Z
XYZ
yz
z
Sposta una stringa a destra, ottieni la sottostringa stringa
Un altro modo per abbreviare una stringa in bash è ottenere la sottostringa di una stringa. L'operazione risultante può essere utilizzata per implementare un'operazione di spostamento a destra simile al metodo sopra.
Esempio: Shift Right Loop
string = "abcdefghijklmnopqrsuvwxyz";
per i in $ (seq 0 $ (($ #string - 1)));
Fare
echo $ string: 0: $ #string -i;
Fatto
Produzione
ABCDEFGHIJKLMNOPQRSTUVWXYZ
ABCDEFGHIJKLMNOPQRSTUVWXY
ABCDEFGHIJKLMNOPQRSTUVWX
ABCDEFGHIJKLMNOPQRSTUVW
Abcdefghijklmnopqrstuv
Abcdefghijklmnopqrstu
Abcdefghijklmnopqrst
Abcdefghijklmnopqrs
Abcdefghijklmnopqr
Abcdefghijklmnopq
Abcdefghijklmnop
abcdefghijklmno
Abcdefghijklmn
Abcdefghijklm
Abcdefghijkl
Abcdefghijk
Abcdefghij
Abcdefghi
Abcdefgh
Abcdefg
a B c D e F
abcde
ABCD
ABC
ab
UN
Esempio: piramide
Per divertimento, combiniamo i due esempi di loop di turno sopra per disegnare un passo nel nostro terminale.
Esempio: passaggio del ciclo
string = "abcdefghijklmnopqrsuvwxyz";
per i in $ (seq 0 $ (($ #string - 1)));
Fare
echo $ string: 0: $ #string -i;
Fatto
| tac;
per i in $ (seq 0 $ (($ #string - 1)));
Fare
echo $ string: $ i;
Fatto
Produzione
UN
ab
ABC
ABCD
abcde
a B c D e F
Abcdefg
Abcdefgh
Abcdefghi
Abcdefghij
Abcdefghijk
Abcdefghijkl
Abcdefghijklm
Abcdefghijklmn
abcdefghijklmno
Abcdefghijklmnop
Abcdefghijklmnopq
Abcdefghijklmnopqr
Abcdefghijklmnopqrs
Abcdefghijklmnopqrst
Abcdefghijklmnopqrstu
Abcdefghijklmnopqrstuv
ABCDEFGHIJKLMNOPQRSTUVW
ABCDEFGHIJKLMNOPQRSTUVWX
ABCDEFGHIJKLMNOPQRSTUVWXY
ABCDEFGHIJKLMNOPQRSTUVWXYZ
ABCDEFGHIJKLMNOPQRSTUVWXYZ
bcdefghijklmnopqrstuvwxyz
CDEFGHIJKLMNOPQRSTUVWXYZ
defghijklmnopqrsuvwxyz
efghijklmnopqrsuvwxyz
fghijklmnopqrstuvwxyz
ghijklmnopqrsuvwxyz
hijklmnopqrsuvwxyz
ijklmnopqrsuvwxyz
jklmnopqrsuvwxyz
klmnopqrsuvwxyz
lmnopqrsuvwxyz
mnopqrstuvwxyz
nopqrstuvwxyz
opqrstuvwxyz
pqrstuvwxyz
QRSTUVWXYZ
RStuvwxyz
Stuvwxyz
tuvwxyz
uvwxyz
Vwxyz
W x y Z
XYZ
yz
z
Capitalizzare l'intera stringa in Bash
In Bash4 o successive puoi capitalizzare i caratteri stampabili utilizzando l'espansione dei parametri come segue.
$ String ^^
Supponiamo che lanciamo le prime 10 parole dell'uscita dal passaggio del ciclo di cambio in una variabile chiamata piramide. Si noti che non modificato, il comportamento previsto per eco al suo contenuto è il seguente.
Comando
Pyramid = "A AB ABCD ABCDE ABCDEF ABCDEFG ABCDEFGH ABCDEFGHI ABCDEFGHIJ"
echo $ piramide
Produzione
A AB ABC ABCD ABCDE ABCDEF ABCDEFG ABCDEFGH ABCDEFGHI ABCDEFGHIJ
Nota che come ci si aspetterebbe, non ci sono cappelli. Facciamo esplodere. Cioè, faremo tutti i tappi dei suoi personaggi.
Comando
echo $ Pyramid ^^
Produzione
A AB ABC ABCD ABCDE ABCDEF ABCDEFG ABCDEFGH ABCDEFGHI ABCDEFGHIJ
È stato facile! Che ne dici se vogliamo convertire solo la prima lettera in una stringa in tappi come una frase? Sì possiamo! Tutto quello che dobbiamo fare è provare un po 'meno duramente, un personaggio in meno per essere esatti.
Capitalizzare solo la prima lettera in una stringa
Forse capitalizzare l'intera stringa non è la tecnica di manipolazione della stringa bash che stai cercando. E se devi solo capitalizzare la prima lettera come una frase?
Comandi
Pyramid = "A AB ABCD ABCDE ABCDEF ABCDEFG ABCDEFGH ABCDEFGHI ABCDEFGHIJ"
echo $ Pyramid^
Produzione
A AB ABC ABCD ABCDE ABCDEF ABCDEFG ABCDEFGH ABCDEFGHI ABCDEFGHIJ
Supponiamo ora che siamo più interessati a convertire le stringhe in minuscolo. Fortunatamente, c'è un modo puro Bash per farlo; Questo è usare l'espansione dei parametri.
Convertire l'intera stringa in minuscolo in bash
Converti una stringa in tutte le minuscole in bash utilizzando l'operatore di espansione dei parametri a doppia comma (",,").
Comandi
piramid = "A AB ABC ABCD ABCDE ABCDEF ABCDEFG ABCDEFGH ABCDEFGHI ABCDEFGHIJ";
echo $ piramid;
echo $ piramide ,,
Produzione
A AB ABC ABCD ABCDE ABCDEF ABCDEFG ABCDEFGH ABCDEFGHI ABCDEFGHIJ
A AB ABC ABCD ABCDE ABCDEF ABCDEFG ABCDEFGH ABCDEFGHI ABCDEFGHIJ
Converti solo la prima lettera in una stringa in minuscolo
Converti il primo carattere in una stringa minuscola in Bash utilizzando l'operatore di espansione dei parametri singoli (",").
Comandi
piramid = "A AB ABC ABCD ABCDE ABCDEF ABCDEFG ABCDEFGH ABCDEFGHI ABCDEFGHIJ";
echo $ piramid;
echo $ piramide,
Produzione
A AB ABC ABCD ABCDE ABCDEF ABCDEFG ABCDEFGH ABCDEFGHI ABCDEFGHIJ
A AB ABC ABCD ABCDE ABCDEF ABCDEFG ABCDEFGH ABCDEFGHI ABCDEFGHIJ
Assegna una stringa vuota un valore e restituisce il suo valore
Spesso si desidera impostare un fallback per una stringa vuota e far persistere il suo valore in uno script bash come il caso quando si accettano facoltativamente le variabili dall'ambiente. Questo può essere realizzato usando l'espansione dei parametri.
Comandi
echo [$ str];
echo [$ str: = vuoto];
echo [$ str]
Produzione
[
[vuoto]
[vuoto]
Note: Si presume che STR non sia assegnato
Sostituire un modello che si verifica in una stringa una volta in Bash
Abbiamo una stringa seduta in una variabile e vogliamo sostituire la prima occorrenza di una sottostringa. Ecco come.
Uso di base
$ str/pattern/sostituzione
Comandi
STR = "0110110001101001011011110011101010111110000110110100001101001011011011011110011101000010111
00110001101101111101101101 ";
echo $ str;
echo $ str/111/000
Produzione
0110110001101001011011100111010101011110000110100000011010010110110111110011101101
00001011100110001101101111101101101
0110110001101001011000000000010100001000011010000001101001010110000000000001
0000100000011000110110000101101101
Sostituire tutte le occorrenze di uno schema in una stringa in bash
Abbiamo una stringa in una variabile e vogliamo sostituire tutte le occorrenze di una sottostringa. Ecco come.
Uso di base
$ str // pattern/sostituzione
Comandi
STR = "01101100011010010110111100111010101111110000001101000011011010010110110111001110
100001011100110001101101111101101101 ";
echo $ str;
echo $ str // 111/000
Produzione
0110110001101001011011100111010101011110000110100000011010010110110111100
1110100001011100110001101101111101101101
0110110001101001011000000000000101000000000011010000001101001010110000000
0001000010000001100011011000000101101101
Come manipolare le stringhe in bash usando comandi esterni
Per manipolare le stringhe in bash usando un comando esterno, dobbiamo utilizzare una funzione che il manuale bash chiama la sostituzione del comando. In breve, qualunque cosa sia dentro $ () o "viene trattata come un comando e sostituito in posizione. Francamente, preferisco il primo modo; Tuttavia, puoi usare entrambi. Il modo semplice per utilizzare la sostituzione del comando è assegnare il risultato della sostituzione del comando a una variabile come segue.
Comandi
risultato = $ (comando)
Nel caso della manipolazione della stringa usando un comando esterno in bash, dovremmo pipisci l'eco di una stringa al comando, a meno che non si accetta la stringa al comando come parametro. Ecco come dovrebbe essere il nuovo risultato.
Comandi
risultato = $ (echo "$ risultato" | comando)
Ora, proviamo a fare qualcosa di reale. Tuttavia, ridurre una stringa contenente parole all'ultima parola nella stringa? Per questo esempio, usiamo il comando esterno gawk.
Note sui seguenti comandi. Facciamo tutto minuscolo e sbarazziamo i periodi. La citazione è di Linus Torvalds. È una citazione davvero popolare.
Comandi
QUOTE = "Parlare è economico. Mostrami il codice.";
last_word = $ (echo "$ quote //./ "| gawk 'print $ (nf)');
echo "$ last_word ,,"
Produzione
codice
Qui abbiamo coperto come manipolare le stringhe della pura bash e l'uso di comandi esterni. Per le tecniche di manipolazione delle stringhe di Bash pura, è stata utilizzata una caratteristica chiamata espansione dei parametri. D'altra parte, per il caso di comandi esterni, è stata utilizzata la sostituzione dei comandi. Certo, nello scrivere questo pezzo, ho migliorato la mia capacità di manipolare le stringhe in Bash. Spero che tu abbia fatto anche tu.
Si noti che l'argomento di questa discussione non è stato trattato in tutto. Tuttavia, gli esercizi sono lasciati per coloro che vorrebbero armeggiare un po 'di più. Per altre manipolazioni di stringhe non contenute in questo articolo, puoi contattarmi direttamente o contattare l'editor.
È abbastanza manipolazione delle stringhe, per ora ... grazie,