comando di ordinamento in unix con ordinamento numerico

Ho file1:

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

File2 I want:

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

Fondamentalmente ordina numericamente file1.

Commenti

  • Quando eseguo un semplice Unix sort sul tuo File1, senza opzioni, ottengo il tuo File2. Cosa stai facendo diversamente? Cosa stai omettendo di questa domanda?

Risposta

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

sort -V 

Uso questa opzione molto spesso …

In qualche direzione , ls -v per version-sort ls.

Risposta

Devi dire a sort -n di ordinare la parte dopo =:

sort -t = -k 2n 

Commenti

  • Recentemente stavo cercando questo ^^. Ma ancora una volta D. Cosa fanno -k2n? È correlato allordinamento numerico? grazie.
  • @KasiyA -k definisce una chiave di ordinamento. Vedere la pagina man per i dettagli. -k2n definisce una chiave di ordinamento che inizia nel secondo campo e termina alla fine della riga e la rende una chiave di ordinamento numerica.

risposta

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

sort -h file1 > file2 

Rispondi

usa sort:

sort -n file1 > file2 

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

 sort -g file1 > file 2 

-g, –general-numeric-sort

Commenti

  • No, tutti quelli le righe hanno la stessa posizione con sort -n poiché ' non iniziano con un numero. Il motivo per cui li ordina è lordinamento a riga intera di ultima istanza (lessicale, non numerica) fatto per le righe con la stessa classificazione. Ciò ordinerebbe "$lvl=17" prima di "$lvl=2".
  • @St é phaneChazelas grazie per averlo sottolineato.
  • Parafrasando, -n e -g sono ridondanti qui poiché linput non è numerico . Quindi questa risposta è fuorviante, da qui il voto negativo (si noti anche che -g e le opzioni lunghe sono specifiche di GNU).
  • ma -g è un buon generale-numerico- ordina
  • Che ' serve ancora per ordinare i valori numerici, la differenza con -n è che ' non è limitato a numeri interi decimali. Ciò ordinerebbe comunque "$lvl=17" prima di "$lvl=2" come parte dellordinamento di ultima istanza.

Risposta

sort -n è ciò che desideri utilizzare. Ordina mentre ordiniamo i numeri. sort -k 2 -n file1

Commenti

  • Ma lOP vuole ordinare in ordine crescente, che è limpostazione predefinita. Perché suggerisci lordine inverso?
  • quanto sopra è corretto quando i campi sono separati da tabulazioni o spazi e non funzioneranno in OP ' s case.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *