Script para eliminar caracteres específicos en un archivo

Foro sobre GNU Linux
Responder
gbeltran
Mensajes: 297
Registrado: 13 May 2023, 01:15
Ubicación: Valencia - España
Contactar:

Script para eliminar caracteres específicos en un archivo

Mensaje por gbeltran »

El siguiente código que adjunto es un script de bash que elimina los caracteres y patrones que especifiquemos en el mismo y guarda el archivo resultante en el mismo directorio añadiendo antes de la extensión del archivo .modificado. En mi caso, he elegido eliminar los caracteres **, *** y ###.

He llamado al script elimina_caracteres.sh y le he dado permisos de ejecución. Como argumento le he pasado un archivo denominado script_borrar_caracteres_explicacion.txt:

Código: Seleccionar todo

guillermo@maquina:~$ ./elimina_caracteres.sh ~/Documentos/script_borrar_caracteres_explicacion.txt
Aquí va el contenido del script::

Código: Seleccionar todo

#!/bin/bash

# Verificar que se ha pasado un argumento
if [ "$#" -ne 1 ]; then
    echo "Uso: $0 <ruta_del_archivo>"
    exit 1
fi

# Obtener la ruta del archivo
archivo_original="$1"

# Verificar que el archivo existe
if [ ! -f "$archivo_original" ]; then
    echo "El archivo '$archivo_original' no existe."
    exit 1
fi

# Definir el nombre del nuevo archivo
archivo_modificado="${archivo_original%.txt}.modificado.txt"

# Usar sed para eliminar los caracteres y patrones especificados
sed -e 's/\*//g' -e 's/###//g' -e 's/##//g' "$archivo_original" > "$archivo_modificado"

# Confirmar que el archivo ha sido creado
echo "Archivo modificado creado: $archivo_modificado"
Explicación del Script
- `sed -e 's/\**//g'`: Elimina todos los 2 asteriscos (`**`).
- `-e 's/###//g'`: Elimina todas las ocurrencias de `###`.
- `-e 's/##//g'`: Elimina todas las ocurrencias de `##`.
- `"$archivo_original"`: Especifica el archivo de entrada.
- `> "$archivo_modificado"`: Redirige la salida a un nuevo archivo.

Cómo Usar el Script
1. Guarda el script en un archivo, por ejemplo, `elimina_caracteres.sh`.
2. Dale permisos de ejecución:

Código: Seleccionar todo

   chmod +x elimina_caracteres.sh
   
3. Ejecuta el script pasando el archivo que deseas modificar:

Código: Seleccionar todo

   ./elimina_caracteres.sh script_modificar_archivo.txt
   
Resultado
El archivo de salida (`script_modificar_archivo.modificado.txt`) contendrá el mismo contenido que el archivo original, pero sin los caracteres y patrones que hemos especificado en el script.
gbeltran
Mensajes: 297
Registrado: 13 May 2023, 01:15
Ubicación: Valencia - España
Contactar:

Re: Script para eliminar caracteres específicos en un archivo

Mensaje por gbeltran »

Resumen del Script:

- Verificación de Argumentos: Comprueba que se ha pasado exactamente un argumento (la ruta del archivo). Si no se pasa un argumento, muestra un mensaje de uso y termina la ejecución:
# Verificar que se ha pasado un argumento
if [ "$#" -ne 1 ]; then
echo "Uso: $0 <ruta_del_archivo>"
exit 1
fi

- Verificación de Existencia del Archivo: Toma el argumento proporcionado y verifica si el archivo existe. Si no existe, muestra un mensaje de error y termina la ejecución:
# Obtener la ruta del archivo
archivo_original="$1"

# Verificar que el archivo existe
if [ ! -f "$archivo_original" ]; then
echo "El archivo '$archivo_original' no existe."
exit 1
fi


- Definición del Nombre del Nuevo Archivo: Crea un nuevo nombre de archivo basado en el nombre del archivo original, cambiando la extensión a .modificado.txt:
# Definir el nombre del nuevo archivo
archivo_modificado="${archivo_original%.txt}.modificado.txt"


- Uso de sed para Eliminar Caracteres: Utiliza sed para eliminar los caracteres y patrones especificados del archivo original y redirige la salida a un nuevo archivo:
# Usar sed para eliminar los caracteres y patrones especificados

sed -e 's/\*//g' -e 's/###//g' -e 's/##//g' "$archivo_original" > "$archivo_modificado"


- Confirmación: Imprime un mensaje confirmando que el archivo modificado ha sido creado:
# Confirmar que el archivo ha sido creado
echo "Archivo modificado creado: $archivo_modificado"
Responder