Lendo com eficiência uma linha de arquivo por linha em um script de shell
- 4844
- 727
- Mrs. Willie Beahan
Ler uma linha de arquivo por linha é uma tarefa comum em muitos scripts de shell, pois permite processar cada linha de um arquivo separadamente e executar ações com base no conteúdo de cada linha. Existem várias maneiras de ler uma linha por linha em um script de shell Linux, mas alguns métodos são mais eficientes do que outros. Neste artigo, exploraremos algumas das maneiras mais eficientes de ler uma linha por linha em um script de shell linux.
Usando loop while
A maneira mais básica de ler uma linha por linha em um script de shell é usar um loop de tempo e o comando de leitura. O comando de leitura lê uma linha de entrada do arquivo e o armazena em uma variável, que pode ser processada pelo script. O loop while permite que você itera através das linhas do arquivo até que o final seja alcançado. Aqui está um exemplo de como isso pode parecer:
#!/usr/bin/Env Bash # Leia o arquivo linha por linha durante a linha de leitura; Faça # Processe conteúdo de linha única eco "$ line" feito < file.txt1234567 | #!/usr/bin/Env Bash # Leia a linha de arquivo por linha de linha de leitura; Faça # Processe conteúdo de linha única eco "$ line" feito < file.txt |
Este método é simples e fácil de entender, mas tem algumas limitações. Uma limitação é que o comando de leitura pode ler apenas uma linha de cada vez, para que possa ser mais lenta para arquivos grandes com muitas linhas. Além disso, o comando de leitura só pode ler a partir da entrada padrão (stdin), então você deve usar o < operator to redirect the contents of the file to stdin. This can be inconvenient if you need to read from multiple files or if you want to read from a file that is not in the current directory.
Usando While Loop com gato
Uma maneira mais eficiente de ler uma linha por linha em um script de shell é usar o comando CAT em combinação com um loop de um tempo. O comando CAT lê um arquivo e produz seu conteúdo para stdout, que pode ser processado pelo loop while. Aqui está um exemplo de como isso pode parecer:
#!/usr/bin/Env Bash # Leia o arquivo linha por linha durante a linha de leitura; Faça # Processe conteúdo de linha única eco "$ line" feito < <(cat file.txt)1234567 | #!/usr/bin/Env Bash # Leia a linha de arquivo por linha de linha de leitura; Faça # Processe conteúdo de linha única eco "$ line" feito < <(cat file.txt) |
Este método é mais eficiente que o comando de leitura porque lê o arquivo inteiro na memória de uma só vez, em vez de ler uma linha de cada vez. Isso pode ser mais rápido para arquivos grandes com muitas linhas. Além disso, o comando CAT pode ler em qualquer arquivo, não apenas no stdin, para que você possa usá -lo para ler de vários arquivos ou arquivos que não estão no diretório atual.
Usando enquanto loop com sed
Outra maneira eficiente de ler uma linha por linha em um script de shell é usar o comando sed em combinação com um loop de tempo. O comando sed é uma poderosa ferramenta de processamento de texto que pode ler um arquivo e gerar seu conteúdo para stdout, uma linha de cada vez. Aqui está um exemplo de como isso pode parecer:
#!/usr/bin/Env Bash # Leia o arquivo linha por linha durante a linha de leitura; Faça # Processe conteúdo de linha única eco "$ line" feito < <(sed -n -e 1p file.txt)1234567 | #!/usr/bin/Env Bash # Leia a linha de arquivo por linha de linha de leitura; Faça # Processe conteúdo de linha única eco "$ line" feito < <(sed -n -e 1p file.txt) |
Este método é semelhante ao comando CAT, mas é mais eficiente porque produz apenas uma linha de cada vez. Isso pode ser mais rápido para arquivos grandes com muitas linhas. Além disso, o comando sed possui muitas opções e recursos que podem ser usados para manipular a saída, por isso é uma ferramenta muito flexível para processamento de texto.
Em resumo, existem várias maneiras de ler uma linha por linha em um script linux shell.