Bash Scripting: cómo leer un archivo línea por línea

En este artículo, vamos a ver cómo leer un archivo línea por línea en Bash scripting.

Puede haber instancias en las que desee leer el contenido de un archivo línea por línea utilizando un script BASH. En esta sección, veremos diferentes formas de hacer precisamente eso. Usaremos comandos y herramientas BASH para lograr ese resultado. Hacemos uso de los comandos read y cat, bucles for, bucles while, etc. para leer el archivo e iterar sobre el archivo línea por línea con unas pocas líneas de script en BASH.

Método 1: usar el comando de lectura y el ciclo while

Podemos usar el comando de lectura para leer el contenido de un archivo línea por línea. Usamos el argumento -r para el comando de lectura para evitar cualquier carácter de escape de barra invertida. 

#!usr/bin/env bash

file="temp.txt"

while read -r line; do
    echo -e "$line\n"
done <$file 

En el siguiente ejemplo, podemos ver que tenemos una iteración sobre un archivo línea por línea y almacenamos el contenido de una sola línea en la variable » línea «. El nombre del archivo se almacena en el archivo de variables y se puede personalizar según los requisitos. Puede ejecutar el script usando el siguiente comando (aquí filereader.sh puede ser cualquier nombre que le dé a su script).

bash filereader.sh

Usamos el comando de lectura con el argumento -r para leer el contenido sin escapar del carácter de barra invertida. Leemos el contenido de cada línea y lo almacenamos en la línea variable y dentro del ciclo while hacemos eco con un argumento -e formateado para usar caracteres especiales como \n e imprimir el contenido de la variable de línea.

El archivo también se puede ingresar analizándolo como un parámetro posicional. 

bash filereader.sh filename

El nombre del archivo puede ser cualquier archivo cuyo contenido desee leer. Debe cambiar la secuencia de comandos donde se ha declarado la variable de archivo.

file=$1

Esto tomará el primer parámetro después del nombre del script como el nombre de archivo que se usará en el script. Por lo tanto, podemos hacer que el script cambie dinámicamente el archivo según la entrada dada.

Método 2: Usar cat y bucle for

Desde este enfoque, podemos leer el contenido de un archivo usando el comando cat y el bucle for. Usamos el mismo enfoque para un ciclo que en el ciclo while pero almacenamos el contenido del archivo en una variable usando el comando cat. El ciclo for itera sobre las líneas en la salida del comando cat una por una hasta que llega a EOF o al final del archivo.

Aquí también podemos incorporar el parámetro posicional como nombre de archivo. Necesitamos reemplazar el nombre del archivo con $1 en el script.

file=$(cat $1)

Esto tomará el archivo del argumento de la línea de comandos y lo analizará en el comando cat para seguir procesando el script. 

#!usr/bin/env bash

file=$(cat temp.txt)

for line in $file
do
    echo -e "$line\n"
done

Por lo tanto, a partir de los ejemplos anteriores, pudimos leer el contenido de un archivo línea por línea en un script BASH.

Publicación traducida automáticamente

Artículo escrito por meetgor y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

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