Flux rss

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

Publicado por Carlos-vialfa, última actualización le lunes, 11 de agosto de 2008, 19:00:16 por Carlos-vialfa

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




Preámbulo


Uno de los errores más comunes cuando se aprende a utilizar los scripts “bash” bajo GNU/Linux para leer un archivo línea por línea, es el utilizar un bucle “for”, (for line in $(cat file.txt); do ...) lo que conduce a una evaluación de cada palabra y no de cada línea, que es lo que se busca.

Ejemplo de un bucle “for”:
for line in $(cat file.txt); do echo "$line" ; done
Esta
Es 
La 
Línea
n°
1
Esta
Es 
La 
Línea
n°
2
Esta
[...]

La solución consiste en utilizar un bucle “while” asociado al comando interno “read”.

Sin embargo, también podemos obtener el mismo resultado con un bucle “for” con la condición de que cambiemos el valor de la variable "$IFS" (Internal Field Separator, separador de campo interno) antes de ejecutar el bucle. Es lo que veremos a continuación.

Bucle while


El bucle “while” sigue siendo el método más apropiado y simple para leer un archivo línea por línea.

Sintaxis


while read linea
do
   comando
done < archivo

Ejemplo


El archivo de inicio:
Esta es la línea n° 1
Esta es la línea n° 2
Esta es la línea n° 3
Esta es la línea n° 4
Esta es la línea n° 5

Las instrucciones en línea de comandos:
while read line; do echo -e "$line\n"; done < file.txt

o en un script “bash”:
#! /bin/bash

while read line
do 
   echo -e "$line\n"
done < file.txt

La salida en la pantalla será (stdout):
Esta es la línea n° 1
Esta es la línea n° 2
Esta es la línea n° 3
Esta es la línea n° 4
Esta es la línea n° 5

Trucos


También podemos a partir de un archivo estructurado (como una libretas de direcciones o /etc/passwd por ejemplo) obtener los valores de cada campo y asignarlos a varias variables con el comando “read”. Sin embargo hay que tener cuidado de asignar a la variable “IFS” el separador de campo adecuado (espacio por defecto).

Ejemplo:
#! /bin/bash

while IFS=: read user pass uid gid full home shell
do
echo -e "$full :\n\
	Pseudo : $user\n\
	UID :\t $uid\n\
	GID :\t $gid\n\
	Home :\t $home\n\
	Shell :\t $shell\n\n"
done < /etc/passwd

Complemento


while read i; do echo -e "parametro : $i"; done < <(echo -e "a\nab\nc")

Bucle for


Si bien es cierto que el bucle “while” es el método más simple, sin embargo este tiene un gran inconveniente, el de eliminar el formateado de las líneas y especialmente los espacios y tabulaciones.
Felizmente el bucle “for” asociado a un cambio de IFS permite conservar la estructura del documento a la salida.

Sintaxis


oldIFS=$IFS     # conserva el separador de campo
IFS=$'\n'     # nuevo separador de campo, el caracter fin de línea
for línea in $(cat archivo)
do
   comando
done
IFS=$old_IFS     # restablece el separador de campo predeterminado


PD: El artículo original fue escrito por jipicy contribuidor de CommentCaMarche

Resultados de

Desfragmentar el disco duro La desfragmentación consiste en reagrupar los fragmentos de los archivos que se encuentran dispersos en el disco duro a fin de optimizar su tiempo de acceso durante la lectura de archivos de gran tamaño. Para la desfragmentación, se utilizan... es.kioskea.net/faq/sujet-64-desfragmentar-el-disco-duro
Se inicia la instalación pero da error Hola, cuando estoy instalando el windows xp, despues que formatea el disco y comienza a copiar los archivos, avanza hasta cierto porcentaje y me da error en la lectura de archivos en el cd. He probado con distintos cd de xp y distintas unidades de cd,... es.kioskea.net/forum/affich-22718-se-inicia-la-instalacion-pero-da-error
Procesos: mshta: mshta.exe mshta.exe (Microsoft HTML Application) es un componente de Windows que se utiliza para leer archivos HTA, aplicaciones autónomas HTML que se pueden cargar independientemente del navegador. El archivo que corresponde a este proceso se encuentra... es.kioskea.net/processus/mshta-exe.php3

Resultados de

Cómo reproducir un archivo RMVBLa extensión RMVB (Real Media Variable Bitrate) es una extensión para Real Player; para poder ver los archivos con esta extensión debemos tener los codecs Real Player. Puedes descargar el reproductor Real Player del siguiente enlace: Descargar Real... es.kioskea.net/faq/sujet-406-como-reproducir-un-archivo-rmvb
Guia de uso del Shell para principiantesSHELL BASH – GUIA DE USO – Nivel Principiante Introducción Llamado a los miembros de Kioskea II. ¿Qué es el Shell? III. Cómo acceder a la línea de comandos IV. Las consolas virtuales Ejemplo: Acceder a la consola 3 desde la interfaz... es.kioskea.net/faq/sujet-387-guia-de-uso-del-shell-para-principiantes
[Bash] La variable de entorno PATHLa variable de entorno PATH I. Preámbulo II. ¿Qué es el shell? III. Definición IV. Sección de análisis V. Añadir un directorio a la variable PATH VI. Y luego... I. Preámbulo En los sistemas GNU/Linux queramos o no, nos convertimos en... es.kioskea.net/faq/sujet-315-bash-la-variable-de-entorno-path

Resultados de

Como leer archivos MIME?Hola,quiero leer un archivo MIME y Windows me dice que no se puede. ¿Hay que descargarse algun programa o codec?, ¿Sabeis cual? es.kioskea.net/forum/affich-33978-como-leer-archivos-mime
Como puedo abrir un archivo rarHola, nesecito saber porqe descarge un programa rar pero sin qerer lo comberti a otra forma para abrirlo me pueden decir como lo puedo abrir ademas no puedo leer el archivo ayuda porfa es.kioskea.net/forum/affich-24037-como-puedo-abrir-un-archivo-rar

Resultados de

Descargar PreviewConfigPreviewConfig es una aplicacion que te permitira abrir y leer archivos en formatos no tan comunes. Muchas veces nos cruzamos con archivos que nuestra PC es incapaz de leer, bueno, solucionalo con esta sencilla aplicacion. es.kioskea.net/telecharger/telecharger-521-previewconfig
Descargar PC Inspector File Recovery Al igual que SoftPerfect File Recovery o HandyRecovery, este programa es capaz de recuperar archivos borrados, pero éste va más lejos: puede leer particiones que ya no son accesibles (simulando el comportamiento del sistema de archivos), o incluso... es.kioskea.net/telecharger/telecharger-116-pc-inspector-file-recovery
Descargar IsoBusterIsoBuster es una herramienta de recuperacion de CDs, DVDs, BDs y HD-DVDs que acepta todos los formatos y todos los sistemas de archivos comunes. Con IsoBuster podras encontrar datos guardados en un soporte que Windows no consigue leer. Ejecuta... es.kioskea.net/telecharger/telecharger-137-isobuster

Resultados de

Google lanza 'Knol', una base enciclopédica para competir con WikipediaLogotipo del motor de búsqueda estadounidense en internet Google, en una alfombrilla para el ratón del ordenador, en una imagen de archivo. Google, primer motor de búsqueda en internet mundial, lanzó Knol, una enciclopedia en línea que pretende... es.kioskea.net/actualites/google-lanza-knol-una-base-enciclopedica-para-competir-con-wikipedia-10609-actualite.php3

Resultados de

Interrupciones y conflictos del hardware Debido a que el procesador no puede procesar múltiples datos al mismo tiempo (procesa un dato a la vez) el sistema de multitareas es en realidad una alternancia de fragmentos de instrucciones de muchas tareas diferentes. Es posible suspender... es.kioskea.net/repar/irq.php3
Personalización de Microsoft DOS El procedimiento de inicio de DOS se define en los archivos autoexec.bat y config.sys ubicados en la raíz de la unidad "C:\". Se recomienda que haga copias de seguridad de esos archivos antes de modificarlos. Para desactivar una línea de comando en... es.kioskea.net/dos/dosperso.php3
Procesos: actmovie: actmovie.exe El proceso actmovie.exe (del inglés Active Movie) corresponde a la aplicación ActiveMovie: es un componente DirectX que se utiliza para leer y grabar video, especialmente en formato ASF (ActiveMovie Streaming Format). El archivo que corresponde a... es.kioskea.net/processus/actmovie-exe.php3