LINUX

Cómo leer un archivo línea por línea en un script Bash [3 Methods]

leer el archivo línea por línea en el script bash

Al escribir un script bash, depende del flujo de automatización, a veces el script tiene que leer el contenido del archivo línea por línea. Aquí aprendemos 3 métodos en un script bash para leer el archivo línea por línea.

Método 1: usar el redirector de entrada

La forma más sencilla de leer un archivo línea por línea es utilizando el redirector de entrada en un bucle while.

Para demostrar, hemos creado un archivo de muestra llamado ‘mycontent.txt’ y lo usaremos a lo largo de este tutorial.

$ cat mycontent.txt
This is a sample file
We are going through contents
line by line
to understand

Creemos un script llamado ‘example1.sh’ que usa aporte redireccionar y lazo.

$ more example1.sh
#!/bin/bash
while read y
do
echo "Line contents are : $y "
done < mycontent.txt

Cómo funciona:

– Declaración de shell que es «bash»
– Comenzar el ciclo while y guardar el contenido de la línea en la variable «y»
– hacer parte del bucle while (punto de partida)
– echo para imprimir y «$ y» significa imprimir el valor de la variable, es decir, la línea
– Leer el contenido del archivo usando el redirector de entrada «<" y cerrar con hecho

Ejecución de Script y Salida:

$ ./example1.sh
Line contents are : This is a sample file
Line contents are : We are going through contents
Line contents are : line by line
Line contents are : to understand

Método 2: usar el comando cat

El segundo método es usar el comando cat y luego enviar su producción como aporte mientras tanto lazo utilizando la tubo.

Cree un archivo de secuencia de comandos ‘ejemplo2.sh’, con contenido como:

$ more example2.sh
#!/bin/bash
cat mycontent.txt | while read y

do
echo "Line contents are : $y "
done

Cómo funciona:

– Declaración de shell que es «bash»
– Salida del comando cat enviado como entrada al bucle while usando tubería
«|» y guardar el contenido de la línea en la variable «y»
– hacer parte del bucle while (punto de partida)
– echo para imprimir y «$ y» significa imprimir el valor de la variable, es decir, la línea
– Cierre del bucle while hecho

Ejecución de Script y Salida:

$ ./example2.sh

Line contents are : This is a sample file
Line contents are : We are going through contents
Line contents are : line by line
Line contents are : to understand

Sugerencia: podemos combinar todos los comandos y usarlos como delineadores.

Producción:

$ while read line; do echo $line; done < mycontent.txt
This is a sample file
We are going through contents
line by line
to understand

3. Usando el nombre de archivo pasado como argumento

Este tercer método enviará el nombre del archivo como argumento de entrada a través de la línea de comando.

Cree un archivo de secuencia de comandos llamado ‘ejemplo3.sh’, como:

$ more example3.sh
#!/bin/bash
while read y
do
echo "Line contents are : $y "
done < $1

Cómo funciona:

– Declaración de shell que es «bash»
– Comenzar el ciclo while y guardar el contenido de la línea en la variable «y»
– hacer parte del bucle while (punto de partida)
– echo para imprimir y «$ y» significa imprimir el valor de la variable, es decir, la línea
– Leer el contenido del archivo desde el argumento de la línea de comando, es decir, $ 1 usando el redirector de entrada «<" y cerrar con hecho

Ejecución de Script y Salida:

$ ./example3.sh mycontent.txt 

Line contents are : This is a sample file
Line contents are : We are going through contents Output of Script
Line contents are : line by line
Line contents are : to understand

Manejo de barra invertida y carácter de escape

Cuando el contenido del archivo tiene barra invertida y caracteres de escape, el comando de lectura se usa para ignorar la barra invertida y el carácter de escape.

Si queremos leer todo del archivo, use -r opción para evitar que los escapes de barra invertida se interpreten y muestren el valor en la consola.

Si el contenido del archivo tiene un separador de archivo como una coma o una barra vertical, podemos usar IFS (Separador de campo interno) para dividir el archivo según el delimitador y mostrar los valores.

Ejemplo de secuencia de comandos de shell:

#!/bin/bash
inputfile="foobar.txt"
while IFS=, read -r y
do
echo $y
done < $inputfile

Flujo de secuencia de comandos:

– Asignar la ruta del archivo a la variable ‘inputfile’
– Mientras que el bucle lee el archivo línea por línea
– -r evita que se interpreten los escapes de barra invertida
– IFS (Separador de campo interno), si queremos dividir la línea con el separador de campo necesitamos especificar el valor del separador (Ej: si la línea tiene un valor como ‘foo, bar’ y queremos dividir la coma, entonces el valor IFS debería ser ( IFS =,))
– echo ayudará a imprimir el contenido en la consola
– una vez alcanzado el final del archivo mientras sale el bucle

Conclusión

Este tutorial explica cómo leer el contenido del archivo línea por línea usando el script de shell bash con ejemplos. Ayuda a buscar cadenas en un archivo leyendo líneas individualmente.

Gracias por leer, deje sus sugerencias y reseñas en la sección de comentarios.

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba
Cerrar