Articles

Recorrer el contenido de un archivo en Bash

a menudo es un requisito leer cada una de las líneas de un archivo utilizando un script bash. Hay varios enfoques para leer las líneas de un archivo. En el siguiente ejemplo, primero hemos descrito cómo crear un archivo de muestra y luego ejecutar un script leyendo ese archivo de muestra.

Crear un archivo para Leer

# Open vi Editorvi a_file.txt# Input the below linesMondayTuesdayWednesdayThursdayFridaySaturdaySunday# cat the filecat a_file.txt

Ejecutar el código anterior nos da el siguiente resultado:

MondayTuesdayWednesdayThursdayFridaySaturdaySunday

el Uso de Do-while

En este enfoque utilizamos un do-while para leer un archivo., Damos el nombre del archivo como una entrada al final del archivo. Primero creamos un script y le damos permiso de ejecución. Solo entonces puede leer el archivo y mostrar el resultado.

#!/bin/bashwhile read LINEdo echo "$LINE"done < a_file.txt

ejecutar el código anterior nos da el siguiente resultado:

MondayTuesdayWednesdayThursdayFridaySaturdaySunday

usar for Y in

en el siguiente enfoque usamos un bucle for junto con la cláusula in. Aquí almacenamos el resultado del comando cat (que es cada línea) en una variable que es parte del bucle for y echo la variable.,

#!/bin/bashfile=a_file.txtfor i in `cat $file`doecho "$i"done

ejecutar el código anterior nos da el siguiente resultado −

MondayTuesdayWednesdayThursdayFridaySaturdaySunday

con solo echo

También podemos obtener el contenido del archivo utilizando solo echo. Pero el resultado saldrá como una matriz de líneas e impreso como salida de una línea que muestra la combinación de todas las líneas.

echo $( < a_file.txt )

ejecutar el código anterior nos da el siguiente resultado:

Monday Tuesday Wednesday Thursday Friday Saturday Sunday

Leer archivo con líneas en blanco

Si un archivo tiene algunas líneas que están en blanco, entonces podemos evitarlas en la salida utilizando el siguiente código., Esto utiliza el IFS (separador de campo interno) se establece en cadena vacía para que las líneas en blanco se tratan como separador de campo y se evitan en la salida. Suponiendo que hay líneas en blanco entre la 3ª y la 4ª línea, esos embargos en blanco no se imprimirán.

#!/bin/bashwhile IFS = read -r LINEdo echo "$LINE"done < a_file.txt

Ejecutar el código anterior nos da el siguiente resultado:

MondayTuesdayWednesdayThursdayFridaySaturdaySunday

Publicado el 03-Ene-2020 11:45:05

Anuncios