Recorrer el contenido de un archivo en bash
- 1517
- 316
- Eduardo Tapia
Bash, el shell de Bourne-Again, es un lenguaje popular de línea de comandos y un lenguaje de secuencia de comandos que se usa ampliamente por su simplicidad y facilidad de uso. Una de las tareas más comunes que uno podría necesitar realizar usando bash es pasar el contenido de un archivo.
En este artículo, exploraremos diferentes métodos para recorrer el contenido de un archivo utilizando scripting bash, incluida la lectura de línea por línea y palabra por palabra.
Método 1: Uso del comando 'While' Loop y 'Leer'
El 'mientras' bucle combinado con el 'leer' El comando es el método más común para recorrer el contenido de un archivo en bash. Este método lee el archivo Line by Line, que es especialmente útil para procesar archivos grandes que pueden no encajar en la memoria.
#!/bin/bash filename = "Ejemplo.txt "while ifs = read -r línea do echo" $ line "hecho < "$filename"12345678 | #!/bin/bash filename = "Ejemplo.txt "while ifs = Read -r Linedo Echo" $ Line "Hecho < "$filename" |
En este ejemplo, usamos el 'IFS' (Separador de campo interno) variable para especificar el delimitador (por defecto, una nueva línea) para separar los campos en la entrada. El 'leer' El comando lee cada línea y el 'eco' El comando imprime la línea en la consola.
Método 2: Uso del comando 'para' bucle y 'cat'
Otro método para recorrer el contenido de un archivo es usar el comando 'para' bucle y 'cat'. Este método es menos eficiente que el comando 'while' bucle and 'lee', ya que lee todo el archivo en la memoria antes de pasar a través de él.
#!/bin/bash filename = "Ejemplo.txt "para línea en $ (cat" $ nombre de archivo ") do echo" $ line "12345678 | #!/bin/bash filename = "Ejemplo.txt "para línea en $ (cat" $ nombre de archivo ") do echo" $ line " |
En este ejemplo, usamos el 'gato' comandar leer todo el contenido del archivo y el 'para' Loop itera sobre cada línea. Sin embargo, este método divide el contenido por Whitespace (espacios, pestañas y nuevas líneas) de forma predeterminada, lo que puede conducir a un comportamiento inesperado al procesar archivos con múltiples palabras por línea.
Método 3: recorrer palabras con 'IFS'
Si necesita procesar un archivo Word by Word, puede usar el 'IFS' variable para cambiar el delimitador a un espacio.
#!/bin/bash filename = "Ejemplo.txt "ifs = $ '\ t \ n' para palabra en $ (cat" $ nombre de archivo ") do echo" $ word "hecho123456789 | #!/bin/bash filename = "Ejemplo.txt "ifs = $ '\ t \ n'For Word en $ (cat" $ nombre de archivo ") do echo" $ word "hecho |
En este ejemplo, establecemos la variable 'IFS' en una combinación de espacio, pestaña y caracteres de Newline, permitiendo que el bucle se itera sobre las palabras en lugar de las líneas.
Método 4: Uso de 'AWK' para bucle avanzado
Para un procesamiento de archivos más avanzado, puede usar el comando 'AWK', que es una poderosa herramienta de procesamiento de texto con funcionalidad de bucle incorporada.
#!/bin/bash filename = "Ejemplo.txt "awk 'for (i = 1; i<=NF; i++) print $i ' "$filename"12345 | #!/bin/bash filename = "Ejemplo.txt "awk 'for (i = 1; i<=NF; i++) print $i ' "$filename" |
En este ejemplo, 'Awk' Lee el archivo y los bucles a través de cada campo (palabra) utilizando sus variables incorporadas 'NF' (Número de campos) y '$ i' (Valor de campo actual). Este método es particularmente útil para tareas de manipulación de texto más complejas.
Conclusión
En este artículo, hemos explorado cuatro métodos para recorrer el contenido de un archivo en bash: usando el bucle 'while' y 'leer' comando, el 'para' bucle y 'gato' comando, cambiando el 'IFS' variable para recorrer palabras y emplear el 'Awk' Comando para bucle avanzado. Dependiendo de su requisito, elija una de las opciones anteriores para recorrer una multa en un script de shell.
- « Cómo crear un directorio si no existe en Linux
- Diferencia entre citas individuales y dobles en Bash »