El proceso técnicamente es sencillo

```bash
$ cat uno.txt
JUAN ALBERTO|SANCHEZ MEDINA|32|j...@gmail.com|
 JUAN ALBERTO|SANCHEZ MEDINA    otro|32|j...@gmail.com|
 JUAN ALBERTO|SANCHEZ MEDINA otro mas|32|j...@gmail.com|
ROBERTO0| SANTOS RODRIGUEZ|52|robe...@gmail.com|
ROBERTO1| SANTOS   RODRIGUEZ|52|robe...@gmail.com|
ROBERTO2| SANTOS RODRIGUEZ |52|robe...@gmail.com|
```

```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|j...@gmail.com|=> JUAN
ALBERTO|SANCHEZ|MEDINA|32|j...@gmail.com|
JUAN ALBERTO|SANCHEZ MEDINA otro|32|j...@gmail.com|=> JUAN
ALBERTO|SANCHEZ|MEDINA otro|32|j...@gmail.com|
JUAN ALBERTO|SANCHEZ MEDINA otro mas|32|j...@gmail.com|=> JUAN
ALBERTO|SANCHEZ|MEDINA otro mas|32|j...@gmail.com|
ROBERTO0|SANTOS RODRIGUEZ|52|robe...@gmail.com|=>
ROBERTO0|SANTOS|RODRIGUEZ|52|robe...@gmail.com|
ROBERTO1|SANTOS RODRIGUEZ|52|robe...@gmail.com|=>
ROBERTO1|SANTOS|RODRIGUEZ|52|robe...@gmail.com|
ROBERTO2|SANTOS RODRIGUEZ|52|robe...@gmail.com|=>
ROBERTO2|SANTOS|RODRIGUEZ|52|robe...@gmail.com|
```
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 <debianer...@gmail.com> wrote:

> Gonzalo:
>
> Te agradezco la respuesta. Realizaré preubas.
>
> Gracias
>
> On Thu, Oct 3, 2019 at 5:57 PM Gonzalo Rivero <fishfromsa...@gmail.com>
> 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 <
> > > frantorresgall...@gmail.com> 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 <debianer...@gmail.com> 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|j...@gmail.com|
> > > > > ROBERTO| SANTOS RODRIGUEZ|52|robe...@gmail.com|
> > > > >
> > > > >
> > 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..."

Responder a