Dividindo uma String em um Delimitador no Bash

Bash

Quebrando a manipulação de strings no Bash

Ao trabalhar com scripts shell, uma tarefa comum é dividir uma string com base em um delimitador. Por exemplo, considere uma string contendo endereços de e-mail separados por ponto e vírgula. Se você precisar processar cada e-mail individualmente, entender como dividir essa string torna-se essencial. Este artigo irá guiá-lo através de diferentes métodos para conseguir isso no Bash.

Exploraremos soluções como usar o comando `tr` e manipular o Separador de Campo Interno (IFS). No final, você será capaz de lidar com a divisão de strings com eficiência e redefinir o IFS para seu valor padrão. Vamos mergulhar e simplificar suas tarefas de script Bash!

Comando Descrição
tr Traduz ou exclui caracteres. Usado aqui para substituir o ponto e vírgula por um caractere de nova linha para dividir a string.
IFS Separador de campos interno, usado para dividir strings com base em um delimitador específico em scripts Bash.
read -r -a Lê uma linha de entrada e a divide em um array. A opção -r evita que barras invertidas sejam interpretadas como caracteres de escape.
echo Imprime texto na saída padrão. Usado para exibir os elementos de string divididos.
split Uma função Perl que divide uma string em uma lista de strings com base em um delimitador especificado.
foreach Uma estrutura de loop Perl que itera sobre uma lista de valores.

Compreendendo as técnicas de divisão de strings Bash

O primeiro script Bash demonstra como dividir uma string usando o comando. Aqui, definimos uma string E use em conjunção com tr para traduzir o delimitador de ponto e vírgula em um caractere de nova linha. Isso efetivamente divide a string em linhas individuais. O loop então itera sobre cada linha, imprimindo os endereços entre colchetes. Este método é simples e aproveita os poderosos recursos de processamento de texto dos comandos Unix para manipular strings.

Outro método envolve ajustar o . Ao definir temporariamente para um ponto e vírgula, podemos dividir a string em um array. Nós salvamos o original para OIFS antes de modificá-lo, garantindo que possamos restaurá-lo mais tarde. O comando lê a string de entrada em um array chamado , dividindo-o com base no modificado . Após o processamento, o original IFS é restaurado. Essa abordagem fornece uma maneira mais programática de lidar com a divisão de strings no Bash, permitindo-nos utilizar arrays para manipulação posterior.

Usando Bash para dividir strings em um delimitador

Script Bash

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

Dividindo uma string no Bash usando IFS

Script Bash

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

Usando Python para divisão de strings

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]

Usando Perl para dividir uma string

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écnicas avançadas de divisão de strings no Bash

Outro método poderoso para dividir strings no Bash envolve o uso do comando. é um utilitário de linha de comando versátil projetado para digitalização e processamento de padrões. Pode ser particularmente útil para dividir strings porque nos permite definir separadores de campos personalizados. Por exemplo, podemos usar para dividir uma string com base no delimitador de ponto e vírgula e imprimir os componentes individuais. Este método é altamente flexível e pode lidar com tarefas mais complexas de manipulação de strings, tornando-o uma ferramenta valiosa no kit de ferramentas de um programador Bash.

Além disso, o O comando pode ser utilizado para dividir strings com base em delimitadores. O O comando é normalmente usado para extrair seções de cada linha de dados de entrada. Ao especificar um delimitador com o opção e selecionando os campos com o -f opção, podemos dividir e extrair com eficiência partes de uma string. Por exemplo, usando extrairia o primeiro endereço de e-mail da string de entrada. Esses métodos avançados fornecem mais controle e precisão para tarefas de manipulação de strings no Bash.

  1. Como faço para dividir uma string em um delimitador no Bash?
  2. Você pode usar o variável ou comandos como , , e cut para dividir strings em um delimitador.
  3. O que é variável no Bash?
  4. O (Separador de campo interno) é uma variável especial que define o(s) caractere(s) usado(s) para dividir o texto de entrada em palavras ou tokens.
  5. Como posso redefinir o variável para seu valor padrão?
  6. Salve o original valor antes de alterá-lo e restaurá-lo após o processamento: .
  7. O que faz o comando fazer na divisão de strings?
  8. O comando traduz ou exclui caracteres. Pode substituir delimitadores por novas linhas para dividir uma string: .
  9. Posso dividir uma string em um array usando Bash?
  10. Sim, alterando o variável e usando , você pode dividir uma string em um array:
  11. O que é comando usado para?
  12. é um utilitário de linha de comando para digitalização e processamento de padrões. Ele pode dividir strings definindo separadores de campos personalizados.
  13. Como é que comando funciona?
  14. O O comando extrai seções de cada linha de entrada. Ele pode dividir strings especificando um delimitador e selecionando campos: .
  15. Por que está usando útil na divisão de strings?
  16. Usando permite definir delimitadores personalizados para divisão de strings, tornando-o versátil para diferentes formatos de entrada.
  17. É possível dividir uma string por vários delimitadores no Bash?
  18. Sim, você pode usar uma combinação de e para lidar com vários delimitadores.
  19. Eu posso usar para divisão de strings no Bash?
  20. Enquanto é principalmente um editor de stream, pode ser combinado com outros comandos como para dividir strings indiretamente.

Dominar a manipulação de strings no Bash pode melhorar significativamente a eficiência do script. Seja usando para delimitadores simples ou ferramentas mais avançadas como e , essas técnicas são essenciais para uma programação Bash eficaz. Lembre-se de sempre restaurar o original IFS para evitar comportamentos inesperados em seus scripts. Com esses métodos, você pode lidar com uma ampla variedade de tarefas de processamento de strings em seus scripts Bash.