Borrar cadena de texto de varios ficheros (Shell)

¡Hola! Ando liado con algunas cosillas relacionadas con Linux y tuve que hacer un script que paso a describir a continuación 🙂

Bien, lo que vamos a tratar es de ‘eliminar’ una línea de muchos ficheros de texto, entrecomillo eliminar porque en realidad lo que haremos será sustituirla o comentarla 🙂

Ok, pongámonos en situación, deseo comentar una línea que se encuentra en varios ficheros de un directorio, no en todos, lo primero que haremos será buscarla, y si la encontramos, sustituir “cadena” por “#cadena” 😉

Veamos el script:

#!/bin/bash
patron='OnlyShowIn'
for i in $*
do
	linea=`grep -n $patron $i`

	if [-z $linea]
	then
		echo "No se encontró la cadena en el archivo $i"
	else
		echo "Se encontró la cadena en el archivo $i"
		sed 's/OnlyShowIn/#OnlyShowIn/' $i > $i.tmp
		mv $i $i.backup
		mv $i.tmp $i
	fi
done

Paso a explicarlo:
Lo primero que hacemos es declarar una variable con el valor de la cadena que queremos buscar dentro del archivo.

A continuación, con un bucle for recorremos todos los archivos que se le han pasado al script, $* denota todos los parámetros.

Después, asignamos a la variable ‘linea’ el valor de la salida del comando grep, en el caso de que la cadena no se encuentre, $linea estará vacia.

Seguimos con la comprobación de si hemos encontrado la cadena o no, -z $linea dará true cuando la variable sea igual a la cadena vacía.

En el caso de encontrarla, con el comando sed podemos “copiar” el texto del archivo pero ya con la cadena modificada, para despues volcarlo en un archivo temporal.

Por último, hacemos un backup del fichero, no se sabe si podremos volver a necesitarlo, y lo sustituímos por el nuevo, creado ya con la variable modificada 🙂

Para utilizar el script, simplemente copiamos las líneas anteriores a un archivo con extensión .sh, nos vamos a la consola y escribímos lo siguiente:

chmod +x fichero.sh

Para dar permisos de ejecución

./fichero.sh parametros

Para ejecutar 🙂

Bien, esto ha sido todo, espero que hos haya resultado de ayuda 😉

HackSaludos!

Anuncios

Acerca de Darkvidhck

Estudiante de ingeniería informática, haciendo mis pinitos como desarrollador web, programador, gamer y Linuxero. Aficionado a la seguridad. Eterno viciado al conocimiento.
Esta entrada fue publicada en Bash y etiquetada , , , , . Guarda el enlace permanente.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s