Divisione di una stringa su un delimitatore in Bash

Bash

Abbattere la manipolazione delle stringhe in Bash

Quando si lavora con gli script di shell, un'attività comune è dividere una stringa in base a un delimitatore. Ad esempio, considera una stringa contenente indirizzi email separati da punto e virgola. Se è necessario elaborare ogni email singolarmente, capire come suddividere questa stringa diventa essenziale. Questo articolo ti guiderà attraverso diversi metodi per raggiungere questo obiettivo in Bash.

Esploreremo soluzioni come l'utilizzo del comando `tr` e la manipolazione del separatore di campo interno (IFS). Alla fine, sarai in grado di gestire la suddivisione delle stringhe in modo efficiente e reimpostare l'IFS sul suo valore predefinito. Immergiamoci e semplifichiamo le tue attività di scripting Bash!

Comando Descrizione
tr Traduce o elimina i caratteri. Utilizzato qui per sostituire il punto e virgola con un carattere di nuova riga per dividere la stringa.
IFS Separatore di campo interno, utilizzato per dividere le stringhe in base a un delimitatore specifico negli script Bash.
read -r -a Legge una riga di input e la divide in un array. L'opzione -r impedisce che le barre rovesciate vengano interpretate come caratteri di escape.
echo Stampa il testo sull'output standard. Utilizzato per visualizzare gli elementi della stringa divisa.
split Una funzione Perl che divide una stringa in un elenco di stringhe in base a un delimitatore specificato.
foreach Una struttura di loop Perl che esegue un'iterazione su un elenco di valori.

Comprensione delle tecniche di suddivisione delle stringhe Bash

Il primo script Bash dimostra come dividere una stringa utilizzando il comando comando. Qui definiamo una stringa e utilizzare insieme a tr per tradurre il delimitatore del punto e virgola in un carattere di nuova riga. Ciò suddivide effettivamente la stringa in singole righe. IL loop quindi ripete su ogni riga, stampando gli indirizzi tra parentesi quadre. Questo metodo è semplice e sfrutta le potenti capacità di elaborazione del testo dei comandi Unix per manipolare le stringhe.

Un altro metodo prevede la regolazione del . Impostando temporaneamente con un punto e virgola, possiamo dividere la stringa in un array. Salviamo l'originale A OIFS prima di modificarlo, assicurandoci di poterlo ripristinare in seguito. IL Il comando legge la stringa di input in un array chiamato , suddividendolo in base a quello modificato . Dopo l'elaborazione, l'originale IFS viene ripristinato. Questo approccio fornisce un modo più programmatico per gestire la suddivisione delle stringhe in Bash, permettendoci di utilizzare gli array per ulteriori manipolazioni.

Utilizzo di Bash per dividere le stringhe su un delimitatore

BashScript

#!/usr/bin/env bash
# Input string
IN="bla@some.com;john@home.com"
# Split string using 'tr' and iterate
mails=$(echo $IN | tr ";" "\n")
for addr in $mails; do
  echo "> [$addr]"
done

# Output:
# > [bla@some.com]
# > [john@home.com]

Dividere una stringa in Bash usando IFS

BashScript

#!/usr/bin/env bash
# Input string
IN="bla@some.com;john@home.com"
# Save the original IFS
OIFS=$IFS
# Set IFS to semicolon
IFS=';'
# Split string into an array
read -r -a mails2 <<< "$IN"
# Restore the original IFS
IFS=$OIFS
# Iterate over the array
for x in "${mails2[@]}"; do
  echo "> [$x]"
done

# Output:
# > [bla@some.com]
# > [john@home.com]

Utilizzo di Python per la suddivisione delle stringhe

Scrittura Python

#!/usr/bin/env python3
# Input string
IN = "bla@some.com;john@home.com"
# Split string by semicolon
mails = IN.split(';')
# Iterate and print each element
for addr in mails:
    print(f"> [{addr}]")

# Output:
# > [bla@some.com]
# > [john@home.com]

Usare Perl per dividere una stringa

Scrittura Perl

#!/usr/bin/env perl
use strict;
use warnings;
# Input string
my $IN = "bla@some.com;john@home.com";
# Split string by semicolon
my @mails = split(';', $IN);
# Iterate and print each element
foreach my $addr (@mails) {
    print "> [$addr]\n";
}

# Output:
# > [bla@some.com]
# > [john@home.com]

Tecniche avanzate di divisione delle stringhe in Bash

Un altro metodo potente per dividere le stringhe in Bash prevede l'utilizzo del file comando. è un'utilità da riga di comando versatile progettata per la scansione e l'elaborazione dei modelli. Può essere particolarmente utile per dividere le stringhe perché ci consente di definire separatori di campo personalizzati. Ad esempio, possiamo usare per dividere una stringa in base al delimitatore punto e virgola e stampare i singoli componenti. Questo metodo è altamente flessibile e può gestire attività più complesse di manipolazione delle stringhe, rendendolo uno strumento prezioso nel toolkit di un programmatore Bash.

Inoltre, il il comando può essere utilizzato per dividere le stringhe in base ai delimitatori. IL Il comando viene in genere utilizzato per estrarre sezioni da ciascuna riga di dati di input. Specificando un delimitatore con il file opzione e selezionando i campi con il -f opzione, possiamo dividere ed estrarre in modo efficiente parti di una stringa. Ad esempio, utilizzando estrarrebbe il primo indirizzo email dalla stringa di input. Questi metodi avanzati forniscono maggiore controllo e precisione per le attività di manipolazione delle stringhe in Bash.

  1. Come posso dividere una stringa su un delimitatore in Bash?
  2. Puoi usare il variabile o comandi come , , E cut per dividere le stringhe su un delimitatore.
  3. Quale è variabile in Bash?
  4. IL (Separatore di campo interno) è una variabile speciale che definisce i caratteri utilizzati per dividere il testo di input in parole o token.
  5. Come posso resettare il variabile al suo valore predefinito?
  6. Salva l'originale valore prima di modificarlo e ripristinarlo dopo l'elaborazione: .
  7. Cosa fa il comando fare nella divisione delle stringhe?
  8. IL il comando traduce o elimina i caratteri. Può sostituire i delimitatori con caratteri di fine riga per dividere una stringa: .
  9. Posso dividere una stringa in un array usando Bash?
  10. Sì, modificando il variabile e utilizzando , puoi dividere una stringa in un array:
  11. Quale è comando utilizzato per?
  12. è un'utilità della riga di comando per la scansione e l'elaborazione dei modelli. Può dividere le stringhe definendo separatori di campo personalizzati.
  13. Come funziona il lavoro di comando?
  14. IL Il comando estrae sezioni da ogni riga di input. Può dividere le stringhe specificando un delimitatore e selezionando i campi: .
  15. Perché sta usando utile nella suddivisione delle stringhe?
  16. Utilizzando consente di definire delimitatori personalizzati per dividere le stringhe, rendendolo versatile per diversi formati di input.
  17. È possibile dividere una stringa con più delimitatori in Bash?
  18. Sì, puoi usare una combinazione di E per gestire più delimitatori.
  19. Posso usare per la divisione delle stringhe in Bash?
  20. Mentre è principalmente un editor di flussi, può essere combinato con altri comandi come per dividere le stringhe indirettamente.

Padroneggiare la manipolazione delle stringhe in Bash può migliorare significativamente l'efficienza degli script. Sia utilizzando per delimitatori semplici o strumenti più avanzati come E , queste tecniche sono essenziali per una programmazione Bash efficace. Ricordatevi di ripristinare sempre l'originale IFS per evitare comportamenti imprevisti negli script. Con questi metodi, puoi gestire un'ampia gamma di attività di elaborazione delle stringhe nei tuoi script Bash.