Re: Reemplazo de texto en una base de datos
El 4/10/19 a las 23:14, Javier Barroso escribió:
> On Thu, Oct 3, 2019 at 11:47 PM Debia Linux <debianeromx@gmail.com> wrote:
>>
>> Lista:
>>
>> Buenas tardes, me encuentro con un dilema que no puedo resolver.
>>
>> Tengo una base de datos con NOMBRES, APELLIDOS, EDAD y CORREO y tiene
>> la estructura siguiente:
>>
>> JUAN ALBERTO|SANCHEZ MEDINA|32|juan@gmail.com|
>> ROBERTO| SANTOS RODRIGUEZ|52|roberto@gmail.com|
>>
>> y asi suman 100 nombres con apellidos y se van sumando 20 diariamente.
>>
>> ¿Como puedo separar los apellidos paternos de los maternos con una
>> barra vertical | sin tener que hacerlo uno por uno, siempre usando un
>> script en bash ademas de que diariamente se van añadiendo.
>>
>> Gracias
>>
>
> Como ya te han comentado con los apellidos compuestos ... no te va a
> ser sencillo
>
> Pero si quieres hacerlo con la típica línea , y los apellidos no son compuestos:
> # sed -i.bak 's,\([^|]*\)| *\([^ ]*\) \([^ ]*\) *|,\1|\2|\3|,' fichero
>
> Saludos
>
>
Que te parece utilizar SQLITE3:
instalas esta pequeña base de datos y utilizas este script en bas,
modificalo a tu gusto.
" Empezar
#!/bin/bash
clear
if [[ -z $( type -p sqlite3 ) ]]; then echo -e "REQUIRED: sqlite3 -- NOT
INSTALLED !";exit ;fi
database="/home/piloto/.phonebook.db"
if [ -e "$database" ];then
echo ""
else
echo " La base de datos no existe, crear nueva"
sqlite3 $database "create table phonebook (id INTEGER PRIMARY KEY,Nombre
TEXT,Apellido TEXT,Calle TEXT,Ciudad TEXT,Poblacion TEXT,CP
TEXT,telefono TEXT,Email TEXT, Notas);"
echo "Database created at $database"
fi
# Check options given to the program and "do stuff".
case ${1} in
# oops--you didn't give me anything
"") echo "sqlite+bash Libreta de teléfonos"
echo "================================"
echo "Uso: ${0##*/} <option>";
echo "";
echo " --------------------"
echo " Crear entrada"
echo " $0 -c"
echo " --------------------"
echo " Busca por apellido \"-a";
echo " -a Smith";
echo "";
echo " Busca por teléfono";
echo " -t 515-555-5555";
echo ""
echo " Busca por email";
echo " -em aaaa@bbbb";
echo ""
echo " Busca por nombre sin prefijo";
echo " $0 dave";
echo " --------------------"
echo " Editar entrada"
echo " $0 -e"
echo "================================"
echo ""
;;
# Create an entry
"-c")
clear
echo " Insertar datos en la Agenda"
echo "--------------------------------------"
echo "FORMAT: Nombre, Apellido, Calle, Ciudad, Poblacion, CP,teléfono,
Email, Notas"
echo " "
#Insert data into database
read -p " Nombre: " Nombre
read -p " Apellido: " Apellido
read -p " Calle: " Calle
read -p " Ciudad: " Ciudad
read -p "Poblacion: " Poblacion
read -p " CP: " CP
read -p " Teléfono: " telefono
read -p " Email: " Email
read -p " Notas: " Notas
sqlite3 $database "insert into phonebook
(Nombre,Apellido,Calle,Ciudad,Poblacion,CP,telefono,Email,Notas) values
('$Nombre','$Apellido','$Calle','$Ciudad','$Poblacion','$CP','$telefono','$Email','$Notas');"
#clear
echo "----------------------------"
echo "Datos entrados en la agenda"
;;
# Edit an entry
"-e")
clear
read -p "Enter id# to edit: " idnum
echo ""
sqlite3 $database<<EOF
.header off
.mode line
select id,Nombre,Apellido,Calle,Ciudad,Poblacion,CP,telefono,Email,Notas
from phonebook WHERE id = '${idnum}';
.quit
EOF
echo ""
echo "Dejar esta linea como es."
echo ""
echo "-----------------------------------------------"
#Insert data into database
read -p " Nombre: " Nombre
read -p " Apellido: " Apellido
read -p " Calle: " Calle
read -p " Ciudad: " Ciudad
read -p "Población: " Poblacion
read -p " CP: " CP
read -p " teléfono: " telefono
read -p " Email: " Email
read -p " Notas: " Notas
echo ""
if [[ "$Nombre" != "" ]]; then
sqlite3 $database "UPDATE phonebook SET Nombre = '${Nombre}' WHERE
id='${idnum}';"
fi
if [[ "$Apellido" != "" ]]; then
sqlite3 $database "UPDATE phonebook SET Apellido = '${Apellido}' WHERE
id='${idnum}';"
fi
if [[ "$Calle" != "" ]]; then
sqlite3 $database "UPDATE phonebook SET Calle = '${Calle}' WHERE
id='${idnum}';"
fi
if [[ "$Ciudad" != "" ]]; then
sqlite3 $database "UPDATE phonebook SET Ciudad = '${Ciudad}' WHERE
id='${idnum}';"
fi
if [[ "$Poblacion" != "" ]]; then
sqlite3 $database "UPDATE phonebook SET Poblacion = '${Poblacion}'
WHERE id='${idnum}';"
fi
if [[ "$CP" != "" ]]; then
sqlite3 $database "UPDATE phonebook SET CP = '${CP}' WHERE id='${idnum}';"
fi
if [[ "$telefono" != "" ]]; then
sqlite3 $database "UPDATE phonebook SET telefono = '${telefono}' WHERE
id='${idnum}';"
fi
if [[ "$Email" != "" ]]; then
sqlite3 $database "UPDATE phonebook SET Email = '${Email}' WHERE
id='${idnum}';"
fi
if [[ "$Notas" != "" ]]; then
sqlite3 $database "UPDATE phonebook SET Notas = '${Notas}' WHERE
id='${idnum}';"
fi
;;
# Search by last name
"-a")
echo ""
sqlite3 $database<<EOF
.header off
.mode line
select id,Nombre,Apellido,Calle,Ciudad,Poblacion,CP,telefono,Email,Notas
from phonebook WHERE Apellido LIKE '%${2}%';
.quit
EOF
;;
# Search by phone
"-t")
echo ""
sqlite3 $database<<EOF
.header off
.mode line
select id,Nombre,Apellido,Calle,Ciudad,Poblacion,CP,telefono,Email,Notas
from phonebook WHERE telefono LIKE '%${2}%';
.quit
EOF
;;
# Search by email
"-em")
echo ""
sqlite3 $database<<EOF
.header off
.mode line
select id,Nombre,Apellido,Calle,Ciudad,Poblacion,CP,telefono,Email,Notas
from phonebook WHERE Email LIKE '%${2}%';
.quit
EOF
;;
# Search by first name for all others
*)
echo "";
sqlite3 $database<<EOF
.header off
.mode line
select id,Nombre,Apellido,Calle,Ciudad,Poblacion,CP,telefono,Email,Notas
from phonebook WHERE Nombre LIKE '%${1}%';
.quit
EOF
;;
esac
echo ""
exit 0
" Terminar.
--
(·)>
/|\ José Tomás Mateo Ruiz
\_/_ 50550 Aragón España
---------------------------------------
A quien has de acallar, has de halagar.
Reply to: