Operações Básicas com Strings

ShellBeginner
Pratique Agora

Introdução

Neste laboratório, você aprenderá sobre as operações fundamentais com strings em scripts shell. As operações com strings são essenciais para manipular e extrair dados de textos em diversas tarefas de automação. Você explorará conceitos como determinar o comprimento de uma string, localizar a posição de caracteres, extrair partes de um texto (substrings) e substituir trechos específicos. Essas habilidades são cruciais para um processamento de texto eficiente em scripts shell.

Guia de Referência Rápida

Aqui está uma visão geral das operações com strings que abordaremos neste laboratório:

Operação Sintaxe Descrição Exemplo
Comprimento da String ${#string} Calcula o número de caracteres em uma string ${#"hello"} retorna 5
Localizar Posição do Caractere $(expr index "$string" "$char") Encontra a posição de um caractere (índice inicia em 1) $(expr index "abcdef" "c") retorna 3
Extrair Substring ${string:start:length} Extrai uma parte da string (índice inicia em 0) ${"hello":1:3} retorna ell
Substituir Primeira Ocorrência ${string/pattern/replacement} Substitui a primeira ocorrência de um padrão ${"hello"/l/L} retorna heLlo
Substituir Todas as Ocorrências ${string//pattern/replacement} Substitui todas as ocorrências de um padrão ${"hello"//l/L} retorna heLLo
Substituir no Início ${string/#pattern/replacement} Substitui o padrão apenas se estiver no início da string ${"hello"/#he/HE} retorna HEllo
Substituir no Final ${string/%pattern/replacement} Substitui o padrão apenas se estiver no final da string ${"hello"/%lo/LO} retorna helLO
Este é um Laboratório Guiado, que fornece instruções passo a passo para ajudá-lo a aprender e praticar. Siga as instruções cuidadosamente para concluir cada etapa e ganhar experiência prática. Dados históricos mostram que este é um laboratório de nível iniciante com uma taxa de conclusão de 97%. Ele recebeu uma taxa de avaliação positiva de 100% dos alunos.

Criando um Arquivo de Script

Vamos começar criando um arquivo de script onde escreveremos nossas operações com strings.

  1. Abra o terminal no seu WebIDE. O terminal é onde você digitará os comandos para interagir com o sistema Linux.

  2. Navegue até o diretório do projeto:

    cd ~/project

    Este comando altera seu diretório atual para ~/project. O símbolo ~ representa seu diretório pessoal (home), portanto, ~/project é uma pasta chamada "project" dentro da sua home.

  3. Crie um novo arquivo chamado string_operations.sh:

    touch string_operations.sh

    O comando touch cria um novo arquivo vazio. Se o arquivo já existir, ele apenas atualizará a data de modificação do arquivo.

  4. Abra o arquivo no editor do WebIDE. Você pode fazer isso clicando no nome do arquivo no explorador de arquivos no lado esquerdo da interface.

  5. Adicione a seguinte linha "shebang" no topo do arquivo para especificar o interpretador:

    #!/bin/bash

    Esta linha, chamada de "shebang", informa ao sistema para usar o shell Bash para interpretar este script. Ela deve ser sempre a primeira linha de um script shell.

Comprimento da String

Agora, vamos aprender como determinar o tamanho de uma string.

  1. Adicione o seguinte código ao seu arquivo string_operations.sh:

    echo "Step 2: String Length"
    
    STRING="Hello, World!"
    LENGTH=${#STRING}
    
    echo "The string is: $STRING"
    echo "Its length is: $LENGTH"

    Vamos analisar o que cada parte faz:

    • Primeiro, usamos o comando echo para exibir um cabeçalho para esta seção.

      echo "Step 2: String Length"
    • Em seguida, definimos uma variável chamada STRING e atribuímos a ela o valor "Hello, World!".

      STRING="Hello, World!"

      No Bash, não precisamos de palavras-chave especiais para definir variáveis. Simplesmente escrevemos o nome da variável, seguido pelo sinal de igual e o valor.

    • Depois, calculamos o comprimento da string usando a sintaxe ${#variable} e armazenamos o resultado em uma variável chamada LENGTH.

      LENGTH=${#STRING}

      A expressão ${#variable} é uma expansão de parâmetro especial do shell que retorna o número de caracteres na string armazenada na variável.

    • Por fim, exibimos a string original e seu comprimento.

      echo "The string is: $STRING"
      echo "Its length is: $LENGTH"

      O símbolo $ antes do nome de uma variável diz ao Bash para substituí-lo pelo valor contido nela.

  2. Salve o arquivo. Na maioria dos editores, você pode fazer isso pressionando Ctrl+S (ou Cmd+S no Mac).

  3. Torne o script executável:

    chmod +x string_operations.sh

    Este comando altera as permissões do arquivo para permitir sua execução:

    • chmod significa "change mode" (mudar modo).
    • +x significa "adicionar permissão de execução".
    • Sem este passo, o sistema não saberia que este arquivo deve ser tratado como um programa.
  4. Execute o script:

    ./string_operations.sh

    O prefixo ./ diz ao shell para procurar o script no diretório atual. Sem ele, o shell procuraria apenas nos diretórios listados na sua variável de ambiente PATH.

Você deverá ver uma saída semelhante a:

Step 2: String Length
The string is: Hello, World!
Its length is: 13

Se não vir essa saída, verifique se salvou o arquivo e se aplicou a permissão de execução corretamente.

Localizando a Posição do Caractere

A seguir, aprenderemos como encontrar a posição de um caractere específico dentro de uma string.

  1. Adicione o seguinte código ao seu arquivo string_operations.sh:

    echo -e "\nStep 3: Finding Character Position"
    
    STRING="abcdefghijklmnopqrstuvwxyz"
    CHAR="j"
    
    POSITION=$(expr index "$STRING" "$CHAR")
    
    echo "The string is: $STRING"
    echo "We're looking for the character: $CHAR"
    echo "It is at position: $POSITION"

    Vamos examinar este código em detalhes:

    • Começamos com um comando echo que inclui a opção -e e uma sequência de escape \n.

      echo -e "\nStep 3: Finding Character Position"
      • A opção -e habilita a interpretação de sequências de escape.
      • A sequência \n adiciona uma nova linha antes do texto, criando uma separação visual da seção anterior.
    • Em seguida, definimos duas variáveis:

      STRING="abcdefghijklmnopqrstuvwxyz"
      CHAR="j"
      • STRING contém todo o alfabeto em letras minúsculas.
      • CHAR contém o caractere "j" que desejamos procurar.
    • Usamos o comando expr index para encontrar a posição do caractere:

      POSITION=$(expr index "$STRING" "$CHAR")
      • expr é um utilitário para avaliar expressões.
      • A operação index busca caracteres em uma string.
      • A sintaxe $() captura a saída do comando e a atribui à variável POSITION.
      • Envolvemos as variáveis em aspas duplas ("$STRING") para evitar problemas com espaços ou caracteres especiais.
      • Importante: Este comando retorna posições começando em 1 (e não em 0).
    • Por fim, imprimimos os resultados:

      echo "The string is: $STRING"
      echo "We're looking for the character: $CHAR"
      echo "It is at position: $POSITION"
  2. Salve o arquivo e execute o script novamente:

    ./string_operations.sh

Você verá uma saída adicional semelhante a:

Step 3: Finding Character Position
The string is: abcdefghijklmnopqrstuvwxyz
We're looking for the character: j
It is at position: 10

Observe que a posição é baseada em 1, o que significa que o primeiro caractere está na posição 1. Isso difere de muitas linguagens de programação onde a indexação geralmente começa em 0.

Extração de Substring

Agora, vamos aprender como extrair uma parte específica de uma string.

  1. Adicione o seguinte código ao seu arquivo string_operations.sh:

    echo -e "\nStep 4: Substring Extraction"
    
    STRING="The quick brown fox jumps over the lazy dog"
    START=10
    LENGTH=5
    
    SUBSTRING=${STRING:$START:$LENGTH}
    
    echo "The original string is: $STRING"
    echo "Extracting 5 characters starting from position 10:"
    echo "The substring is: $SUBSTRING"

    Vamos analisar este código passo a passo:

    • Primeiro, adicionamos um cabeçalho com uma nova linha para separação:

      echo -e "\nStep 4: Substring Extraction"
    • Definimos nossas variáveis:

      STRING="The quick brown fox jumps over the lazy dog"
      START=10
      LENGTH=5
      • STRING contém uma frase de exemplo.
      • START é a posição onde queremos começar a extração (posição 10).
      • LENGTH é a quantidade de caracteres que queremos extrair (5 caracteres).
    • Usamos a sintaxe de extração de substring do Bash:

      SUBSTRING=${STRING:$START:$LENGTH}
      • A sintaxe é ${variável:posição_inicial:comprimento}.
      • $START e $LENGTH são as variáveis com os valores 10 e 5.
      • Importante: Diferente do comando expr index, as posições aqui começam em 0, ou seja, o primeiro caractere está na posição 0.
    • Exibimos os resultados:

      echo "The original string is: $STRING"
      echo "Extracting 5 characters starting from position 10:"
      echo "The substring is: $SUBSTRING"
  2. Salve o arquivo e execute o script novamente:

    ./string_operations.sh

Você verá uma saída semelhante a:

Step 4: Substring Extraction
The original string is: The quick brown fox jumps over the lazy dog
Extracting 5 characters starting from position 10:
The substring is: brown

Na string "The quick brown fox...", a posição 10 (contando a partir de 0) é o 'b' de "brown", e os 5 caracteres seguintes formam a palavra "brown". Por isso, nossa substring extraída é "brown".

Lembre-se de que a indexação é diferente da que vimos no passo anterior:

  • No expr index (Passo 3), as posições começam em 1.
  • Na extração de substring ${STRING:posição:comprimento} (Passo 4), as posições começam em 0.

Esta é uma fonte comum de confusão no shell scripting, por isso é importante lembrar qual operação utiliza qual sistema de indexação.

Substituição de Strings

Por fim, vamos aprender como substituir partes de uma string.

  1. Adicione o seguinte código ao seu arquivo string_operations.sh:

    echo -e "\nStep 5: String Replacement"
    
    STRING="The quick brown fox jumps over the lazy dog"
    echo "Original string: $STRING"
    
    ## Substituir a primeira ocorrência de 'o' por 'O'
    NEW_STRING=${STRING/o/O}
    echo "Replacing first 'o' with 'O': $NEW_STRING"
    
    ## Substituir todas as ocorrências de 'o' por 'O'
    NEW_STRING=${STRING//o/O}
    echo "Replacing all 'o' with 'O': $NEW_STRING"
    
    ## Substituir 'The quick' por 'The slow' se estiver no início da string
    NEW_STRING=${STRING/#The quick/The slow}
    echo "Replacing 'The quick' with 'The slow' at the beginning: $NEW_STRING"
    
    ## Substituir 'dog' por 'cat' se estiver no final da string
    NEW_STRING=${STRING/%dog/cat}
    echo "Replacing 'dog' with 'cat' at the end: $NEW_STRING"

    Vamos detalhar cada operação de substituição:

    • Primeiro, imprimimos o cabeçalho e a string original:

      echo -e "\nStep 5: String Replacement"
      STRING="The quick brown fox jumps over the lazy dog"
      echo "Original string: $STRING"
    • Substituir a primeira ocorrência de um caractere:

      ## Substituir a primeira ocorrência de 'o' por 'O'
      NEW_STRING=${STRING/o/O}
      echo "Replacing first 'o' with 'O': $NEW_STRING"
      • A sintaxe é ${variável/padrão/substituição}.
      • Isso encontrará a primeira letra 'o' e a substituirá por 'O'.
      • Apenas o primeiro 'o' em "brown" será alterado, mantendo os outros iguais.
    • Substituir todas as ocorrências de um caractere:

      ## Substituir todas as ocorrências de 'o' por 'O'
      NEW_STRING=${STRING//o/O}
      echo "Replacing all 'o' with 'O': $NEW_STRING"
      • A sintaxe é ${variável//padrão/substituição} (note a barra dupla).
      • A barra dupla instrui o Bash a substituir TODAS as ocorrências do padrão.
      • Todos os 'o's em toda a string serão transformados em 'O's.
    • Substituir um padrão no início da string:

      ## Substituir 'The quick' por 'The slow' se estiver no início da string
      NEW_STRING=${STRING/#The quick/The slow}
      echo "Replacing 'The quick' with 'The slow' at the beginning: $NEW_STRING"
      • A sintaxe é ${variável/#padrão/substituição}.
      • O símbolo # especifica que o padrão deve estar obrigatoriamente no início da string.
    • Substituir um padrão no final da string:

      ## Substituir 'dog' por 'cat' se estiver no final da string
      NEW_STRING=${STRING/%dog/cat}
      echo "Replacing 'dog' with 'cat' at the end: $NEW_STRING"
      • A sintaxe é ${variável/%padrão/substituição}.
      • O símbolo % especifica que o padrão deve estar obrigatoriamente no final da string.
  2. Salve o arquivo e execute o script novamente:

    ./string_operations.sh

Você verá uma saída semelhante a:

Step 5: String Replacement
Original string: The quick brown fox jumps over the lazy dog
Replacing first 'o' with 'O': The quick brOwn fox jumps over the lazy dog
Replacing all 'o' with 'O': The quick brOwn fOx jumps Over the lazy dOg
Replacing 'The quick' with 'The slow' at the beginning: The slow brown fox jumps over the lazy dog
Replacing 'dog' with 'cat' at the end: The quick brown fox jumps over the lazy cat

Essas operações de substituição são ferramentas poderosas para manipular texto em scripts shell. Elas permitem realizar alterações direcionadas baseadas em padrões e posições, o que é especialmente útil para tarefas como processamento de dados, formatação de texto ou modificação de conteúdo de arquivos.

Resumo

Neste laboratório, você aprendeu e praticou diversas operações fundamentais com strings em scripts shell:

  1. Criação e execução de um script shell.
  2. Cálculo do comprimento de uma string usando ${#string}.
  3. Localização da posição de um caractere usando $(expr index "$string" "$char").
  4. Extração de uma substring a partir de uma string maior usando ${string:start:length}.
  5. Realização de várias operações de substituição de strings usando:
    • ${string/pattern/replacement} - Substituir a primeira ocorrência.
    • ${string//pattern/replacement} - Substituir todas as ocorrências.
    • ${string/#pattern/replacement} - Substituir no início da string.
    • ${string/%pattern/replacement} - Substituir no final da string.

Essas habilidades formam a base para tarefas mais complexas de processamento de texto em shell scripting. À medida que você continuar trabalhando com scripts, descobrirá que essas operações são inestimáveis para manipular e analisar dados textuais em seus projetos. Lembre-se, a prática é fundamental para dominar esses conceitos, então não hesite em experimentar diferentes strings e operações!