El 4/10/19 a las 23:14, Javier Barroso escribió: > On Thu, Oct 3, 2019 at 11:47 PM Debia Linux <debianer...@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|j...@gmail.com| >> ROBERTO| SANTOS RODRIGUEZ|52|robe...@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.