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?
Tú lo has dicho. Comparar letra por letra. No tiene más.
Lo único que he conseguido hacer es agruparlos por nombres similares
#!/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