elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Top 20 herramientas Hacking más populares de 2020


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  [BASH] Ordenar contactos sin utilizar sort
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [BASH] Ordenar contactos sin utilizar sort  (Leído 1,470 veces)
zenok

Desconectado Desconectado

Mensajes: 4


Ver Perfil
[BASH] Ordenar contactos sin utilizar sort
« en: 28 Noviembre 2014, 10:45 am »

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?


« Última modificación: 28 Noviembre 2014, 10:51 am por zenok » En línea

ivancea96


Desconectado Desconectado

Mensajes: 3.414


ASMático


Ver Perfil WWW
Re:
« Respuesta #1 en: 28 Noviembre 2014, 12:13 pm »

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


En línea

zenok

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Re: [BASH] Ordenar contactos sin utilizar sort
« Respuesta #2 en: 28 Noviembre 2014, 12:49 pm »

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

Código
  1. #!/bin/bash
  2. nombre=pedrito
  3. coincidencias=0
  4.  
  5. while read linea
  6. do
  7.    nombrel=`echo $linea | cut -d ":" -f 1`
  8.    length=`echo $nombre | wc -c`
  9.    for p in `seq 1 $length`
  10.    do
  11.        letra_linea=`echo $nombrel | cut -b $p`
  12.        letra_nombre=`echo $nombre | cut -b $p`
  13.  
  14.        if [ ! $letra_linea ]
  15.        then
  16.            if [ $coincidencias -gt 0 ]
  17.            then
  18.                echo $linea >> agenda.tmp
  19.                echo "$nombre:92051623" >> agenda.tmp
  20.            else
  21.                echo $linea >> agenda.tmp
  22.            fi
  23.            break
  24.        elif [ "$letra_linea" == "$letra_nombre" ]
  25.        then
  26.            coincidencias=`expr $coincidencias + 1`
  27.        fi
  28.    done
  29.  
  30. done < agenda.txt

No sabía exactamente como ordenarlos
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Ordenar usuarios en Bash [Solucionado]
Scripting
Flakito81 2 3,329 Último mensaje 6 Abril 2010, 01:51 am
por Flakito81
[SOLUCIONADO][PYTHON] Como ordenar(sort) un diccionario?
Scripting
Jirp96 5 15,338 Último mensaje 10 Junio 2016, 17:35 pm
por cerototal
[bash] como abrir otra consola y mandarle instrucciones desde bash?
Scripting
aixeiger 2 2,853 Último mensaje 3 Diciembre 2012, 17:25 pm
por aixeiger
Bash 4.2 en windows sin utilizar maquina virtual?
Scripting
eKeR 1 1,338 Último mensaje 21 Enero 2014, 22:40 pm
por jdomgo3
Linux en Windows 10: tutorial para utilizar Bash
Noticias
wolfbcn 0 1,550 Último mensaje 7 Julio 2016, 14:52 pm
por wolfbcn
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines