16.mar.2010 Bash: leer fichero linea por linea

Aunque es una tontería, hoy me volvi loco porque tenía que hacer un script en bash que parseara un archivo linea por linea. El problema que tenia era que cada linea tenia palabras y estas estaban separadas por espacios en blanco. Entonces al hacer un bucle for me ponía una palabra por linea, es decir si el archivo tenia este contenido:

Esto es una linea
Esto es otra
Y esta es la ultima

for line in $(cat fichero_lineas.txt); do echo “$linea” ; done

Esto
es
una
linea
Esto
es
otra
Y
esta
es
la
ultima

Encontré dos soluciones:

Una es usar un blucle while e ir leyendo línea por línea con read.

#!/bin/bash

while read linea; do
echo $linea
done < $1

La otra es cambiar el valor de la variable IFS, que es el separador de campo. Por ejemplo IFS=’\n’ que es el retorno de carro.

IFS=’\n’
for i in $(cat $1)
do
echo $i
done

Related posts

Comment Pages

Hay 1 Comentario to "Bash: leer fichero linea por linea"

  • yeestrada dice:

    Hola, no entendo bien como leer de un fichero. o que necesito hacer es leer una unica linea qeu va a tener el fichero y guardarla en una variable para poder usarla luego. Diganme que tengo mal aqui…

    #!/bin/bash
    file = “name.txt”

    val = read -r FIRSTLINE < $file
    echo val

    saludos
    yordan

Escribe un comentario

XHTML: Puedes usar estos tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

*