Divisió d'una cadena en un delimitador a Bash

Bash

Desglossament de la manipulació de cordes a Bash

Quan es treballa amb scripts d'intèrpret d'ordres, una tasca habitual és dividir una cadena basada en un delimitador. Per exemple, considereu una cadena que conté adreces de correu electrònic separades per punt i coma. Si necessiteu processar cada correu electrònic individualment, entendre com dividir aquesta cadena esdevé essencial. Aquest article us guiarà a través de diferents mètodes per aconseguir-ho a Bash.

Explorarem solucions com utilitzar l'ordre `tr` i manipular el Separador de camps interns (IFS). Al final, podreu gestionar la divisió de cadenes de manera eficient i restablir l'IFS al seu valor predeterminat. Submergiu-nos i simplifiquem les vostres tasques d'escriptura de Bash!

Comandament Descripció
tr Tradueix o elimina caràcters. S'utilitza aquí per substituir el punt i coma amb un caràcter de nova línia per dividir la cadena.
IFS Separador de camps intern, utilitzat per dividir cadenes en funció d'un delimitador específic als scripts Bash.
read -r -a Llegeix una línia d'entrada i la divideix en una matriu. L'opció -r evita que les barres invertides s'interpretin com a caràcters d'escapada.
echo Imprimeix text a la sortida estàndard. S'utilitza per mostrar els elements de cadena dividida.
split Una funció Perl que divideix una cadena en una llista de cadenes basada en un delimitador especificat.
foreach Una estructura de bucle Perl que itera sobre una llista de valors.

Entendre les tècniques de divisió de cadenes Bash

El primer script de Bash mostra com dividir una cadena utilitzant comandament. Aquí, definim una cadena i ús en conjunció amb tr per traduir el delimitador de punt i coma a un caràcter de nova línia. Això trenca efectivament la corda en línies individuals. El A continuació, el bucle itera sobre cada línia, imprimint les adreces entre claudàtors. Aquest mètode és senzill i aprofita les potents capacitats de processament de text de les ordres Unix per manipular cadenes.

Un altre mètode consisteix a ajustar el . Mitjançant la configuració temporal a un punt i coma, podem dividir la cadena en una matriu. Desem l'original a OIFS abans de modificar-lo, assegurant-nos que el podem restaurar més tard. El L'ordre llegeix la cadena d'entrada en una matriu anomenada , dividint-lo en funció del modificat . Després del processament, l'original IFS es restaura. Aquest enfocament proporciona una manera més programàtica de gestionar la divisió de cadenes a Bash, la qual cosa ens permet utilitzar matrius per a més manipulacions.

Ús de Bash per dividir cadenes en un delimitador

Bash Script

#!/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]

Divisió d'una cadena a Bash mitjançant IFS

Bash Script

#!/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]

Utilitzant Python per dividir cadenes

Script 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]

Utilitzant Perl per dividir una cadena

Script 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]

Tècniques avançades de divisió de cadenes a Bash

Un altre mètode potent per dividir cadenes a Bash consisteix a utilitzar el comandament. és una utilitat de línia d'ordres versàtil dissenyada per escanejar i processar patrons. Pot ser especialment útil per dividir cadenes perquè ens permet definir separadors de camps personalitzats. Per exemple, podem utilitzar per dividir una cadena basada en el delimitador de punt i coma i imprimir els components individuals. Aquest mètode és molt flexible i pot gestionar tasques de manipulació de cadenes més complexes, cosa que el converteix en una eina valuosa en el conjunt d'eines d'un programador Bash.

A més, el L'ordre es pot utilitzar per dividir cadenes basades en delimitadors. El L'ordre s'utilitza normalment per extreure seccions de cada línia de dades d'entrada. En especificar un delimitador amb el i seleccionant els camps amb l'opció -f opció, podem dividir i extreure parts d'una cadena de manera eficient. Per exemple, utilitzant extreu la primera adreça de correu electrònic de la cadena d'entrada. Aquests mètodes avançats proporcionen més control i precisió per a les tasques de manipulació de cadenes a Bash.

  1. Com puc dividir una cadena en un delimitador a Bash?
  2. Podeu utilitzar el variable o ordres com , , i cut per dividir cadenes en un delimitador.
  3. Que es el variable a Bash?
  4. El (Separador de camps intern) és una variable especial que defineix els caràcters utilitzats per dividir el text d'entrada en paraules o fitxes.
  5. Com puc restablir el variable al seu valor predeterminat?
  6. Guarda l'original valor abans de canviar-lo i restaurar-lo després del processament: .
  7. Què fa el comanda fer en la divisió de cadena?
  8. El L'ordre tradueix o elimina caràcters. Pot substituir els delimitadors amb noves línies per dividir una cadena: .
  9. Puc dividir una cadena en una matriu amb Bash?
  10. Sí, canviant el variable i utilitzant , podeu dividir una cadena en una matriu:
  11. Que es el comanda utilitzada per?
  12. és una utilitat de línia d'ordres per escanejar i processar patrons. Pot dividir cadenes definint separadors de camps personalitzats.
  13. Com funciona el treball de comandament?
  14. El L'ordre extreu seccions de cada línia d'entrada. Pot dividir cadenes especificant un delimitador i seleccionant camps: .
  15. Per què s'utilitza útil per dividir la cadena?
  16. Utilitzant us permet definir delimitadors personalitzats per dividir cadenes, fent-lo versàtil per a diferents formats d'entrada.
  17. És possible dividir una cadena per múltiples delimitadors a Bash?
  18. Sí, podeu utilitzar una combinació de i per gestionar múltiples delimitadors.
  19. Puc utilitzar per dividir cadenes a Bash?
  20. Mentre és principalment un editor de fluxos, es pot combinar amb altres ordres com ara per dividir les cordes indirectament.

Dominar la manipulació de cadenes a Bash pot millorar significativament l'eficiència de l'escriptura. Tant si s'utilitza per a delimitadors simples o eines més avançades com i , aquestes tècniques són essencials per a una programació eficaç de Bash. Recordeu restaurar sempre l'original IFS per evitar comportaments inesperats als vostres scripts. Amb aquests mètodes, podeu gestionar una àmplia gamma de tasques de processament de cadenes als vostres scripts Bash.