En este módulo, exploraremos técnicas avanzadas para manipular archivos en Bash. Aprenderemos a realizar operaciones complejas que van más allá de las tareas básicas de creación, lectura y escritura de archivos. Este conocimiento es esencial para scripts más sofisticados y eficientes.

Contenido

Manipulación de Archivos con awk

awk es una poderosa herramienta de procesamiento de texto que permite realizar operaciones complejas en archivos de texto. Aquí veremos cómo usar awk para manipular archivos de manera avanzada.

Ejemplo: Filtrar y Formatear Datos

Supongamos que tenemos un archivo data.txt con el siguiente contenido:

John,25,Engineer
Jane,30,Doctor
Doe,22,Artist

Queremos extraer solo los nombres y las profesiones, ignorando las edades.

awk -F, '{print $1, $3}' data.txt

Explicación:

  • -F, especifica que el delimitador de campo es una coma.
  • {print $1, $3} imprime el primer y tercer campo de cada línea.

Salida:

John Engineer
Jane Doctor
Doe Artist

Uso Avanzado de sed

sed es una herramienta de edición de flujo que se utiliza para realizar transformaciones básicas y avanzadas en archivos de texto.

Ejemplo: Reemplazar Texto en un Archivo

Supongamos que tenemos un archivo example.txt con el siguiente contenido:

Hello World
Hello Bash
Hello Scripting

Queremos reemplazar todas las ocurrencias de "Hello" con "Hi".

sed 's/Hello/Hi/g' example.txt

Explicación:

  • s/Hello/Hi/g es una expresión de sustitución que reemplaza "Hello" con "Hi" en todas las ocurrencias (g es para global).

Salida:

Hi World
Hi Bash
Hi Scripting

Combinación de Archivos

A veces es necesario combinar varios archivos en uno solo. Esto se puede hacer de varias maneras en Bash.

Ejemplo: Combinar Archivos con cat

Supongamos que tenemos dos archivos, file1.txt y file2.txt, y queremos combinarlos en un archivo combined.txt.

cat file1.txt file2.txt > combined.txt

Explicación:

  • cat file1.txt file2.txt concatena el contenido de file1.txt y file2.txt.
  • > combined.txt redirige la salida al archivo combined.txt.

Procesamiento de Archivos Grandes

El procesamiento de archivos grandes puede ser desafiante debido a las limitaciones de memoria y tiempo. Aquí hay algunas técnicas para manejar archivos grandes de manera eficiente.

Ejemplo: Procesar Archivos en Bloques

Podemos usar el comando split para dividir un archivo grande en partes más pequeñas y luego procesar cada parte por separado.

split -l 1000 largefile.txt part_

Explicación:

  • -l 1000 divide el archivo en partes de 1000 líneas cada una.
  • largefile.txt es el archivo grande que queremos dividir.
  • part_ es el prefijo para los archivos divididos.

Ejercicios Prácticos

Ejercicio 1: Filtrar y Formatear Datos

Dado un archivo students.txt con el siguiente contenido:

Alice,90,Math
Bob,85,Science
Charlie,95,History

Escribe un script que extraiga solo los nombres y las calificaciones.

Solución:

awk -F, '{print $1, $2}' students.txt

Ejercicio 2: Reemplazar Texto en un Archivo

Dado un archivo greetings.txt con el siguiente contenido:

Good Morning
Good Afternoon
Good Evening

Escribe un script que reemplace "Good" con "Hello".

Solución:

sed 's/Good/Hello/g' greetings.txt

Ejercicio 3: Combinar Archivos

Dado dos archivos part1.txt y part2.txt, escribe un script que los combine en un archivo full.txt.

Solución:

cat part1.txt part2.txt > full.txt

Ejercicio 4: Procesar Archivos en Bloques

Dado un archivo grande logfile.txt, escribe un script que lo divida en partes de 500 líneas cada una.

Solución:

split -l 500 logfile.txt logpart_

Conclusión

En esta sección, hemos aprendido a realizar operaciones avanzadas con archivos utilizando herramientas como awk y sed, así como técnicas para combinar y procesar archivos grandes. Estas habilidades son esenciales para escribir scripts Bash eficientes y efectivos. En el próximo módulo, exploraremos la gestión de procesos en Bash.

© Copyright 2024. Todos los derechos reservados