[BASH] Ordenar contactos sin utilizar sort

Iniciado por zenok, 28 Noviembre 2014, 10:45 AM

0 Miembros y 2 Visitantes están viendo este tema.

zenok

Hola,

Estoy aprendiendo Bash en FP y el profesor ha pedido que ordenemos las palabras sin utilizar sort.

La idea es que al añadir un contacto a un fichero TXT con una sintaxis como esta, inserte el nuevo contacto de forma ordenada:

Citar
Alberto:968282581
Pedrito:920145959
Pedro:920145959

Lo único que se me ocurre es separar el nombre de cada linea y comparar letra por letra del nombre sacado de la linea con el nombre del contacto a añadir para ver si coincide, aunque llega un momento que me pierdo.

¿Alguna idea o sugerencia de como es posible hacer esto?

ivancea96

Tú lo has dicho. Comparar letra por letra. No tiene más.

zenok

Lo único que he conseguido hacer es agruparlos por nombres similares

Código (bash) [Seleccionar]
#!/bin/bash
nombre=pedrito
coincidencias=0

while read linea
do
    nombrel=`echo $linea | cut -d ":" -f 1`
    length=`echo $nombre | wc -c`
    for p in `seq 1 $length`
    do
        letra_linea=`echo $nombrel | cut -b $p`
        letra_nombre=`echo $nombre | cut -b $p`

        if [ ! $letra_linea ]
        then
            if [ $coincidencias -gt 0 ]
            then
                echo $linea >> agenda.tmp
                echo "$nombre:92051623" >> agenda.tmp
            else
                echo $linea >> agenda.tmp
            fi
            break
        elif [ "$letra_linea" == "$letra_nombre" ]
        then
            coincidencias=`expr $coincidencias + 1`
        fi
    done
   
done < agenda.txt


No sabía exactamente como ordenarlos