El proceso técnicamente es sencillo
```bash
$ cat uno.txt
JUAN ALBERTO|SANCHEZ MEDINA|32|[email protected]|
JUAN ALBERTO|SANCHEZ MEDINA otro|32|[email protected]|
JUAN ALBERTO|SANCHEZ MEDINA otro mas|32|[email protected]|
ROBERTO0| SANTOS RODRIGUEZ|52|[email protected]|
ROBERTO1| SANTOS RODRIGUEZ|52|[email protected]|
ROBERTO2| SANTOS RODRIGUEZ |52|[email protected]|
```
```bash
$ cat pasos.bash
#!/bin/bash
while read linea;
do
nombre="$(echo ${linea} | cut -d\| -f1)";
apellidos="$(echo ${linea} | cut -d\| -f2)";
ape1="$(echo ${apellidos} | cut -d' ' -f1)";
ape2="$(echo ${apellidos} | cut -d' ' -f2-)";
numero="$(echo ${linea} | cut -d\| -f3)";
correo="$(echo ${linea} | cut -d\| -f4)";
nuevaLinea="${nombre}|${ape1}|${ape2}|${numero}|${correo}|";
echo "${linea} => ${nuevaLinea}"
done <uno.txt | sed -e "s/ */ /g" -e "s/| /|/g" -e "s/ |/|/g" -e "s/
|/|/g" -e "s/^ //" -e "s/ $//"
```
```bash
$ ./pasos.bash
JUAN ALBERTO|SANCHEZ MEDINA|32|[email protected]|=> JUAN
ALBERTO|SANCHEZ|MEDINA|32|[email protected]|
JUAN ALBERTO|SANCHEZ MEDINA otro|32|[email protected]|=> JUAN
ALBERTO|SANCHEZ|MEDINA otro|32|[email protected]|
JUAN ALBERTO|SANCHEZ MEDINA otro mas|32|[email protected]|=> JUAN
ALBERTO|SANCHEZ|MEDINA otro mas|32|[email protected]|
ROBERTO0|SANTOS RODRIGUEZ|52|[email protected]|=>
ROBERTO0|SANTOS|RODRIGUEZ|52|[email protected]|
ROBERTO1|SANTOS RODRIGUEZ|52|[email protected]|=>
ROBERTO1|SANTOS|RODRIGUEZ|52|[email protected]|
ROBERTO2|SANTOS RODRIGUEZ|52|[email protected]|=>
ROBERTO2|SANTOS|RODRIGUEZ|52|[email protected]|
```
El tema es cuando existen mas de dos palabras en la columna de apellidos
On Thu, Oct 3, 2019 at 6:41 PM Debia Linux <[email protected]> wrote:
> Gonzalo:
>
> Te agradezco la respuesta. Realizaré preubas.
>
> Gracias
>
> On Thu, Oct 3, 2019 at 5:57 PM Gonzalo Rivero <[email protected]>
> wrote:
> >
> >
> >
> > El jue, 03-10-2019 a las 17:20 -0500, Debia Linux escribió:
> > > Me encataria hacer esto, sin embargo es usar MySQL y eso no es lo que
> > > busco, yo diria algo mas sencillo, sin tener que crear usarios, sin
> > > configurar. Yo busco algo mas como bash.
> > >
> > > DebianeroMx
> > >
> > > On Thu, Oct 3, 2019 at 5:12 PM Fran Torres <
> > > [email protected]> wrote:
> > > > Buenas,
> > > >
> > > > yo lo que puedo sugerir, es que con un alter table, añadas el campo
> > > > Segundo_apellido (por ejemplo) y que, todos los nuevos apellidos
> > > > vayan
> > > > a parar ahí. En el primer campo apellidos vayan los paternos, y en
> > > > el
> > > > segundo (el nuevo) los maternos. Luego... inevitablemente los
> > > > registros que ya están hay que cambiarlos uno a uno y los nuevos...
> > > > bueno, habría que hacer lo propio con el programa en cuestión. Lo
> > > > que
> > > > eso implicaría parar el servidor por mantenimiento...
> > > >
> > > > Fran.
> > > >
> > > > El 3/10/19, Debia Linux <[email protected]> escribió:
> > > > > 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|[email protected]|
> > > > > ROBERTO| SANTOS RODRIGUEZ|52|[email protected]|
> > > > >
> > > > >
> > podés imprimir con awk solo el segundo campo (de los apellidos) y luego
> > con awk podés imprimir el primer campo, un "|" y el segundo campo:
> >
> > awk -F '|' "{print $2};" | awk '{print $1 "|" print $2};'
> > No estoy seguro que eso funcione a la primera, y si estoy seguro que
> > habrá una forma mas fácil de hacerlo.
> > man awk
> >
> > seguramente también podrás hacer algo con cut (man cut) o sed (man
> > sed), o hasta usando la sustitución de valores/variables del propio
> > bash (buscar "Advanced Bash Scripting Guide")
> >
> > > > > 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
> > > > >
> > > > >
> >
>
>
--
"Cada cual según sus fuerzas, cada quien según sus necesidades..."