Looping através do conteúdo de um arquivo em bash

Looping através do conteúdo de um arquivo em bash

Bash, a concha de Bourne-de novo, é um shell de linha de comando popular e linguagem de script que é amplamente usada por sua simplicidade e facilidade de uso. Uma das tarefas mais comuns que pode precisar executar usando o Bash é o loop do conteúdo de um arquivo.

Neste artigo, exploraremos diferentes métodos para percorrer o conteúdo de um arquivo usando scripts Bash, incluindo a linha por linha e palavra por palavra.

Método 1: Usando o comando 'while' loop e 'read'

O 'enquanto' loop combinado com o 'ler' O comando é o método mais comum para percorrer o conteúdo de um arquivo em bash. Este método lê a linha de arquivo por linha, o que é especialmente útil para processar arquivos grandes que podem não se encaixar na memória.

#!/bin/bash filename = "Exemplo.txt "while ifs = leia -r line do echo" $ line "feito < "$filename"
12345678#!/bin/bash filename = "Exemplo.txt "while ifs = read -r linedo echo" $ line "feito < "$filename"

Neste exemplo, usamos o 'Ifs' (Separador de campo interno) variável para especificar o delimitador (por padrão, uma nova linha) para separar os campos na entrada. O 'ler' o comando lê cada linha e o 'eco' O comando imprime a linha para o console.

Método 2: Usando o comando 'para' loop e 'gato'

Outro método para percorrer o conteúdo de um arquivo é usar o comando 'para' loop e 'gato'. Este método é menos eficiente que o comando 'while' loop e 'read', pois lê o arquivo inteiro na memória antes de percorrer nele.

#!/bin/bash filename = "Exemplo.txt "para linha em $ (gato" $ filename ") do eco" $ line "feito
12345678#!/bin/bash filename = "Exemplo.txt "para linha em $ (gato" $ filename ") do eco" $ line "feito

Neste exemplo, usamos o 'gato' comando para ler todo o conteúdo do arquivo e o 'para' Loop itera sobre cada linha. No entanto, esse método divide o conteúdo por espaço em branco (espaços, guias e novas linhas) por padrão, o que pode levar a um comportamento inesperado ao processar arquivos com várias palavras por linha.

Método 3: Looping através de palavras com 'ifs'

Se você precisar processar uma palavra de arquivo por palavra, você pode usar o 'Ifs' variável para alterar o delimitador para um espaço.

#!/bin/bash filename = "Exemplo.txt "ifs = $ '\ t \ n' para palavra em $ (gato" $ filename ") faça echo" $ word "feito
123456789#!/bin/bash filename = "Exemplo.txt "ifs = $ '\ t \ n'for word in $ (gat" $ filename ") faça echo" $ word "feito

Neste exemplo, definimos a variável 'ifs' para uma combinação de espaço, guia e caracteres de nova linha, permitindo.

Método 4: Usando 'Awk' para loop avançado

Para um processamento de arquivos mais avançado, você pode usar o comando 'awk', que é uma poderosa ferramenta de processamento de texto com funcionalidade de loop de loop interno.

#!/bin/bash filename = "Exemplo.txt "awk 'for (i = 1; i<=NF; i++) print $i ' "$filename"
12345#!/bin/bash filename = "Exemplo.txt "awk 'for (i = 1; i<=NF; i++) print $i ' "$filename"

Neste exemplo, 'Awk' lê o arquivo e loops através de cada campo (Word) usando suas variáveis ​​internas 'Nf' (Número de campos) e '$ i' (Valor atual do campo). Este método é particularmente útil para tarefas de manipulação de texto mais complexas.

Conclusão

Neste artigo, exploramos quatro métodos para loop através do conteúdo de um arquivo em Bash: usando o loop 'while' e 'ler' comando, o 'para' loop e 'gato' comando, alterando o 'Ifs' variável para percorrer as palavras e empregar o 'Awk' comando para loop avançado. Dependendo da sua exigência, escolha uma das opções acima para loop através de uma multa em um script de concha.