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.