En este ejemplo, lo que se desea es buscar un cierto TEXTO en múltiples archivos, pasados como parámetros al SCRIPT, y mostrar en pantalla los archivos que contiene el TEXTO buscado. El SCRIPT prueba.sh contiene el siguiente código :
1 2 3 4 5 6 7 8 9 10 11 |
#!/bin/bash patron='10.23.1.123' for i in $* do linea=`grep -n $patron $i` if [ "${linea:-NULL}" = "NULL" ]; then continue else echo "Se encontro \"$patron\" en el archivo \"$i\"" fi done |
Ejecutamos el SCRIPT :
1 |
bash prueba.sh arch1.txt arch2.txt arch3.txt arch4.txt arch5.txt arch6.txt arch7.txt arch8.txt arch9.txt arch10.txt |
Al ejecutarlo nos presentaría la siguiente información (Si encuentra el PATRON buscado) :
1 2 3 |
Se encontro "10.23.1.123" en el archivo "arch2.txt" Se encontro "10.23.1.123" en el archivo "arch6.txt" Se encontro "10.23.1.123" en el archivo "arch8.txt" |
Este SCRIPT es solo un ejemplo, el cual se puede adaptar para cualquier situación que se requiera, eliminar lineas, cambiar texto, etc…
A grandes rasgos lo que realiza es :
1.- Mediante un ciclo FOR recorre o iteramos sobre todos los parámetros (archivos) pasados como parámetros para la ejecución del SCRIPT.
2.- Busco el patrón indicado y el resultado de la búsqueda lo almaceno en la variable «linea».
3.- Mediante «if» verificamos si la variables «linea» esta vaciá o no ha sido definida (NULL), de ser así, significa que el patrón no fue encontrado y mediante la instrucción «continue» pasa a la siguiente iteración de parámetros (siguiente archivo).-
4.- Al pasar a la intrucción «else» significa que el patrón fue encontrado y por lo tanto lo imprime en pantalla.-
Muchas gracias.
Encontre tu pagina y me agrada lo que veo.
Sigue asi.