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..."