comando sort in unix con ordinamento numerico


10

Ho file1:

"$lvl=57"
"$lvl=20"
"$lvl=48"
"$lvl=17"
"$lvl=58"

File2 Voglio:

"$lvl=17"
"$lvl=20"
"$lvl=48"
"$lvl=57"
"$lvl=58"

In sostanza numericamente ordinamento del file1.


Quando sorteseguo un semplice Unix sul tuo File1, senza opzioni, ottengo il tuo File2. Cosa stai facendo diversamente? Cosa stai lasciando fuori da questa domanda?
Scott,

Risposte:


17

Mi piace -V --version-sort: si comporta molto bene in molte situazioni mescolando stringhe e numeri

sort -V

Uso questa opzione molto spesso ...

In qualche direzione, ls -vper version-sort ls.


10

Devi dire sort -ndi ordinare sulla parte dopo il =:

sort -t = -k 2n

Di recente stavo guardando questo ^^. Ma un altro Q. Cosa fare -k2n? È correlato all'ordinamento numerico? grazie.
αғsнιη,

2
@KasiyA -kdefinisce una chiave di ordinamento. Vedi la pagina man per i dettagli. -k2ndefinisce una chiave di ordinamento che inizia dal secondo campo e termina alla fine della riga e la rende una chiave di ordinamento numerica.
Stéphane Chazelas,

0

usa ordinamento:

sort -n file1 > file2

-n, --numeric-sort
compare in base al valore numerico della stringa

 sort -g file1 > file 2

-g, --general-numeric-sort


3
No, tutte quelle linee hanno la stessa classifica con sort -npoiché non iniziano con un numero. Il motivo per cui li ordina è l'ordinamento a riga intera dell'ultima risorsa (lessicamente, non numericamente) fatto per le linee con lo stesso ranking. Sarebbe ordinato "$lvl=17"prima "$lvl=2".
Stéphane Chazelas,

@ StéphaneChazelas grazie per la segnalazione.
Hackaholic il

Per parafrasare, -ne -gqui sono ridondanti poiché l'input non è numerico. Quindi questa risposta è fuorviante, quindi il downvote (nota anche che -ge le opzioni lunghe sono specifiche GNU).
Stéphane Chazelas,

ma -g è un buon ordinamento numerico generale
Hackaholic del

Questo è ancora per l'ordinamento di valori numerici, la differenza -nè che non è limitato agli interi decimali. Questo sarebbe ancora sorta "$lvl=17", prima "$lvl=2"come parte della ultima istanza di smistamento.
Stéphane Chazelas,

0

Ho scoperto che, corri sort -h, funzionerà. Lo chiamano --human-numberic-sort.

sort -h file1 > file2

-1

sort -nè quello che vuoi usare. Si ordina mentre ordiniamo i numeri.sort -k 2 -n file1


2
Ma l'OP vuole ordinare in ordine crescente, che è l'impostazione predefinita. Perché stai suggerendo l'ordine inverso?
G-Man dice 'Reinstate Monica' il

quanto sopra è corretto quando i campi sono separati da tabulazioni o spazi e non funzionerà nel caso di OP.
αғsнιη,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.