Articles

Looping through the content of a file in Bash

Often it is a requirement to read each of the line from a file using a bash script. Existem várias abordagens para ler as linhas formam um arquivo. No exemplo abaixo temos descrito primeiro como criar um arquivo de exemplo e, em seguida, executar um script lendo esse arquivo de exemplo.

Criar um arquivo para Leitura

# Open vi Editorvi a_file.txt# Input the below linesMondayTuesdayWednesdayThursdayFridaySaturdaySunday# cat the filecat a_file.txt

Com o código acima nos dá o seguinte resultado −

MondayTuesdayWednesdayThursdayFridaySaturdaySunday

Usando o do-While

nesta abordagem, utilizamos um do-while para ler um arquivo., Nós damos o nome do arquivo como uma entrada no final do arquivo. Primeiro criamos um script e damos a permissão para executá-lo. Então só ele pode ler o arquivo e mostrar o resultado.

#!/bin/bashwhile read LINEdo echo "$LINE"done < a_file.txt

Com o código acima nos dá o seguinte resultado −

MondayTuesdayWednesdayThursdayFridaySaturdaySunday

Usando para e

Na próxima abordagem, utilizamos um loop for, juntamente com a cláusula in. Aqui nós armazenamos o resultado do comando cat (que é cada linha) em uma variável que é parte de laço e eco da variável.,

#!/bin/bashfile=a_file.txtfor i in `cat $file`doecho "$i"done

Com o código acima nos dá o seguinte resultado −

MondayTuesdayWednesdayThursdayFridaySaturdaySunday

Com apenas echo

também podemos obter o conteúdo do arquivo usando apenas o eco. Mas o resultado sairá como uma matriz de linhas e impresso como saída de uma linha mostrando a combinação de todas as linhas.

echo $( < a_file.txt )

Com o código acima nos dá o seguinte resultado:

Monday Tuesday Wednesday Thursday Friday Saturday Sunday

o Arquivo de Leitura com Linhas em Branco

Se um arquivo tem algumas linhas que estão em branco, em seguida, nós ca evitá-los na saída, utilizando o seguinte código., Isto usa o IFS (separador interno de Campos) é definido como um texto vazio de modo que as linhas em branco são tratadas como separador de Campos e evitadas na saída. Assumindo que existem linhas em branco entre a terceira e a quarta linhas, essas liens em branco não serão impressas.

#!/bin/bashwhile IFS = read -r LINEdo echo "$LINE"done < a_file.txt

Com o código acima nos dá o seguinte resultado −

MondayTuesdayWednesdayThursdayFridaySaturdaySunday

Publicado em 03-Jan-2020 11:45:05

Anúncios