Looping através do conteúdo de um arquivo em bash
- 4129
- 1171
- Spencer Emard
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 "feito12345678 | #!/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 "feito123456789 | #!/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.
- « Como criar um diretório se ele não existir no Linux
- Diferença entre citações simples e duplas em Bash »