El procedimiento es el siguiente:
En esta primera pantalla una vez lo hemos ejecutado con
$ sh busca.sh
o bien
$ ./busca.sh
si le hemos dado permisos de ejecucion "chmon +x busca.sh"
Se trata de escribir el path incluido el archivo en la entrada para texto, pero se puede ir autocomplementando con la barra espaciadora una vez de ha metido los dos o tres primeros caracteres del directorio o archivo. Una vez pillado el funcionamiento es bastante sencillo. A continuación se trata de :
elegir el separador que tenemos en nuestro archivo de base de datos, en este caso es un ",", pero se trata de introducir el que tenemos como separador de campos en nuestro archivo. Despues:
Metemos la cadena a buscar en nuestra base de datos, puede ser un nombre (como en este caso), un teléfono, ciudad, etc... depende de lo que queramos buscar ¿verdad?:
Y nos dará la salida de la búsqueda, simple....
Y aquí el codigo:
#!/bin/bash
# (c) sierra21
function archivo(){
FILE=`dialog --stdout --title "Por favor elige un archivo" --fselect $HOME/ 14 48`
case $? in
0)
if [ -f $FILE ];then
clear
else
archivo
fi
;;
1)
echo "Cancel presionado."
exit 0
;;
255)
echo "Caja cerrada."
exit 0
;;
esac
}
function separador(){
SEPA=`dialog --stdout --title "Elije el separador de campos del archivo" --inputbox "Elije separador" 0 0 ""`
case $? in
0)
if [ -z $FILE ];then
separador
else
clear
fi
;;
1)
echo "Cancel presionado."
exit 0
;;
255)
echo "Caja cerrada."
exit 0
;;
esac
}
function busqueda(){
BUSQUEDA=`dialog --stdout --title "Texto a buscar en el archivo" --inputbox "Texto" 0 0 ""`
case $? in
0)
if [ -z $BUSQUEDA ];then
busqueda
else
clear
fi
;;
1)
echo "Cancel presionado."
exit 0
;;
255)
echo "Caja cerrada."
exit 0
;;
esac
}
archivo
separador
busqueda
let campos=`cat $FILE | awk -F $SEPA '{ print NF }'|head -n 1`
campos_dialog="cat $FILE |head -n 1|awk -F $SEPA '{print "
for i in $(seq 1 $campos) ; do
campos_dialog=${campos_dialog}" \" $i \\\"\""\$$i" ""\"\\\"\" \" on\" "
done
campos_dialog=${campos_dialog}\}\'\|sed' '\'s/^\\s//\'
campos_final=$(eval ${campos_dialog})
campos_fin=`echo $campos_final |sed 's/\s/_/g'|sed 's/1_/1 /g'|sed 's/_on_2_/ on 2 /g'|sed 's/_on_3_/ on 3 /g'|sed 's/_on_4_/ on 4 /g'|sed 's/_on_5_/ on 5 /g'|sed 's/_on_6_/ on 6 /g'|sed 's/_on_7_/ on 7 /g'|sed 's/_on_8_/ on 8 /g'|sed 's/_on_9_/ on 9 /g'|sed 's/_on/ on/g'`
dialog --checklist "Que campos quieres ver de los registros? Max 9" 0 0 $campos $campos_fin 2> /tmp/salida.txt
#camp=`cat /tmp/salida.txt |awk -F " " '{ print NF }'`
read g g2 g3 g4 g5 g6 g7 g8 g9 <<<$(IFS=" "; echo `cat /tmp/salida.txt |sed 's/"//g'`)
parte=""
if [[ -n $g ]]; then
parte=${parte}""\$$g"\"\t\""
fi
if [[ -n $g2 ]]; then
parte=${parte}""\$$g2"\"\t\""
fi
if [[ -n $g3 ]]; then
parte=${parte}""\$$g3"\"\t\""
fi
if [[ -n $g4 ]]; then
parte=${parte}""\$$g4"\"\t\""
fi
if [[ -n $g5 ]]; then
parte=${parte}""\$$g5"\"\t\""
fi
if [[ -n $g6 ]]; then
parte=${parte}""\$$g6"\"\t\""
fi
if [[ -n $g7 ]]; then
parte=${parte}""\$$g7"\"\t\""
fi
if [[ -n $g8 ]]; then
parte=${parte}""\$$g8"\"\t\""
fi
if [[ -n $g9 ]]; then
parte=${parte}""\$$g9"\"\t\""
fi
clear
echo "---------------------------------------------------------"
cat $FILE |grep -i "$BUSQUEDA" |awk -F $SEPA '{print '"$parte"'}'
echo "---------------------------------------------------------"
Esto es todo, un saludo, bye!





No hay comentarios:
Publicar un comentario