jueves, 29 de marzo de 2012

Script para automatizar la eliminación de líneas en ficheros de texto

Hola!

Como continuación y basado en el script para sustitución masiba de texto, os propongo este otro, que también puede llegar a ser util.

En particular sirve para eliminar la línea de texto exacta que se le indique dentro de los ficheros que se le indique (puede ponerse una máscara para seleccionar múltiples ficheros).

Como siempre, copiar el siguiente texto en un fichero nuevo:

#!/bin/bash
# Script borrado de linea que se indique dentro de un conjunto de ficheros
# Arg.1: texto a buscar
# Arg.2: Ficheros donde borrar lineas, incluyendo comodines
# Por IMV-2012

b="/^"$1"$/d"
echo $b
shift 1
c='.temp'
for a in $*; do
# echo $a
cat $a | sed "$b" > $c
cp $c $a
done
rm $c

Se guarda con el nombre que consideréis oportuno, en mi caso he puesto borrado_linea.sh y se le da permiso de ejecución. Ésto se puede hacer desde el explorador->botón derecho->Propiedades->..... o desde línea de comandos:

#chmod +x borrado_linea.sh

Una ver terminado todo esto se llamaría de la siguiente forma:

#borrado_linea.sh texto_exacto_de_linea mascara_de_ficheros

Se mostrará en pantalla la instrucción que se usará para realizar esta acción y cambiará todos los ficheros que se correspondan con la máscara y que contengan una línea exacta a la indicada.

El funcionamiento de este script se basa de nuevo en el uso del comando sed. Fuera del script la eliminación de líneas sería de la siguiente forma:

#sed '/^linea$/d' ficheros

Donde linea se sustituye por la línea exacta a buscar y fichero por el nombre del fichero donde queremos hacer el trabajo. El carácter ^ indica principio de línea y $ final de línea.

Para más detalles de este comando os recomiendo le deis una vuelta al siguiente link El shell de linux, comando sed.

Bueno, espero os sea de utilidad.

=:)

No hay comentarios:

Publicar un comentario