PDA

Visualizza la versione completa : [BASH/C/C++]Ordinamento file di testo complesso...


Ol3iconfini
07-11-2007, 21:31
Salve, ho il seguente problema, che non credo sia banalissimo... Penso che sia risolvibile in bash, e quindi lo posto in Linux, visto che è frequentato da gente che ha una certa confidenza con la riga di comando.
Ho un file di testo di questo tipo:


1 1a7 0.935101
1 1a7 0.987847
-1 1a7 0.992194
-1 1a7 0.045534
-1 1a7 0.000561
1 1a7 0.014129
1 1ad 0.794279
1 1ad 0.554256
.
.
.
1 1f3 0.5855366
1 1f3 0.7155366
-1 1f3 0.0734625
-1 4ot 0.0111216
-1 4ot 0.0624855

Quindi ho un numero variabile di righe per ciascun oggetto (gli oggetti nell'esempio sono 1a7, 1ad, 1f3, 4ot) e ciascuna riga ha una etichetta + o -1, il nome dell'oggetto e poi un valore numerico decimale...
Quello che a me serve è riordinare per ciascun oggetto le righe in ordine decrescente del valore decimale. Quindi riordinare prima tutte le righe con 1a7 per ordine decrescente del valore numerico, poi tutte quello di 1ad, e così via per tutti gli oggetti.


1 1a7 0.992194
1 1a7 0.987847
1 1a7 0.935101
-1 1a7 0.045534
1 1a7 0.014129
-1 1a7 0.000561
1 1ad 0.794279
1 1ad 0.554256
.
.
.
1 1f3 0.7155366
1 1f3 0.5855366
-1 1f3 0.0734625
-1 4ot 0.0624855
-1 4ot 0.0111216

Successivamente dovrei estrarre una riga per ciascun oggetto, corrispondente al 2° valore più grande tra le righe dell'oggetto...


1 1a7 0.987847
1 1ad 0.554256
.
.
.
1 1f3 0.5855366
-1 4ot 0.0111216

Un po' un casino... Non so se per ottenere ciò che voglio devo necessariamente creare n file per gli n oggetti, visto che non so come si potrebbe imporre l'ordinamento alfabetico sugli oggetti e all'interno di questo ordinamento un secondo ordinamento decrescente sul valore numerico...
Qualche dritta?
Grazie.

Loading