GNU/Linux >> Tutoriales Linux >  >> Linux

¿Leer un archivo orientado a líneas que puede no terminar con una nueva línea?

Tengo un archivo llamado /tmp/urlFile donde cada línea representa una url. Estoy tratando de leer del archivo de la siguiente manera:

cat "/tmp/urlFile" | while read url
do
    echo $url
done

Si la última línea no termina con un carácter de nueva línea, esa línea no se leerá. Me preguntaba por qué?

¿Es posible leer todas las líneas, sin importar si terminan con una nueva línea o no?

Respuesta aceptada:

Harías:

while IFS= read -r url || [ -n "$url" ]; do
  printf '%sn' "$url"
done < url.list

(Efectivamente, ese bucle vuelve a agregar la nueva línea que falta en la última (no) línea).

  • ¿Por qué se considera una mala práctica usar un bucle de shell para procesar texto?
  • ¿Entiendes "IFS=leer -r línea"?
  • ¿Por qué printf es mejor que echo?

Linux
  1. ¿Cómo agregar una nueva línea al final de un archivo?

  2. ¿Cómo unir líneas que no comienzan con "#" o ";"?

  3. ¿Reemplazar nueva línea con Nul?

  4. ¿Adjuntar palabra al final de la línea con Sed?

  5. Ir al principio o al final del archivo en Vim [Consejo rápido]

Cómo leer archivos línea por línea en Bash

Cómo leer un archivo línea por línea en Bash

Comando Diff en Linux con ejemplos

Cómo enviar un correo electrónico con un archivo adjunto desde la línea de comandos

¿Cómo reemplazar un archivo en jar con línea de comando en Linux?

¿Por qué Vim está agregando una nueva línea? ¿Es esto una convención?