BASH – Script para leer archivo linea por linea.-

Para leer un archivo en BASH linea por linea se podría implementar realizando :

#!/bin/bash
while read linea; do
	echo -e "Línea: $linea"
done < archivo

Fíjate que en la última línea, el fichero (hay que poner su path completo) se utiliza como entrada para el comando while. Pero con esta versión sencilla podemos encontrarnos con varios problemas. Una versión más segura es:

#!/bin/bash
while IFS='' read -r linea || [[ -n "$linea" ]]; do
	echo -e "Línea: $linea"
done < archivo

IFS es una variable interna de bash que establece el separador de palabras. Al dejarlo vacío evitamos que se eliminen los espacios que hubiera al principio de la línea. El parámetro -r en el comando read hace que no se interpreten los caracteres escapados (con \). Y la condición || [[ -n $line ]] evita que se produzca un error si la última línea no termina con \n. Como conviene no alterar IFS, podemos mejorar la solución con :

#!/bin/bash
backIFS=$IFS
while IFS='' read -r linea || [[ -n "$linea" ]]; do
	echo -e "Línea: $linea"
done < archivo
IFS=$backIFS
Esta entrada fue publicada en Unix - Linux. Guarda el enlace permanente.

Deja una respuesta

Tu dirección de correo electrónico no será publicada.

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.