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.

Responder a