Manipolazione della stringa bash

Manipolazione della stringa bash
In Bash, non diversamente da qualsiasi altro linguaggio di programmazione, un programma vive per mettere le cose in secchi e nominarle per un uso successivo. Questi secchi sono disponibili per manipolare per tutta la vita del programma o fino a quando non sono più discorsi o considerati non più necessari. Il programma vive per manipolare i secchi.

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.

Manipolazione delle stringhe in bash

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

In conclusione sulla manipolazione delle corde in bash

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,