comanda de sortare în unix cu sortare numerică

Am fișier1:

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

Fișier2 I want:

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

Sortarea numerică a fișierului1.

Comentarii

  • Când rulez un Unix simplu sort pe File1, fără opțiuni, primesc File2. Ce faci diferit? Ce lăsați în afara acestei întrebări?

Răspuns

Îmi place -V –version-sort: se comportă foarte bine pentru multe situații amestecând șiruri și numere

sort -V 

Folosesc foarte des această opțiune …

În direcția unică , ls -v pentru versiunea-sort ls.

Răspuns

Trebuie să-i spuneți lui sort -n să sortați pe partea de după =:

sort -t = -k 2n 

Comentarii

  • Recent căutam acest ^^. Dar încă un Î. Ce face -k2n? Este legat de sortarea numerică? mulțumesc.
  • @KasiyA -k definește o cheie de sortare. Consultați pagina manuală pentru detalii. -k2n definește o cheie de sortare începând cu al doilea câmp și terminând la sfârșitul liniei și o face o cheie de sortare numerică.

Răspuns

Am constatat că, pur și simplu rulați sort -h, acesta va funcționa. Ei îl numesc --human-numberic-sort.

sort -h file1 > file2 

Răspuns

utilizați sortare:

sort -n file1 > file2 

-n, –numeric-sort
comparați în funcție de valoarea numerică șir

 sort -g file1 > file 2 

-g, –general-numeric-sort

Comentarii

  • Nu, toate liniile au același clasament cu sort -n deoarece ' nu încep cu un număr. Motivul pentru care le sortează este sortarea pe linie completă de ultimă instanță (lexical, nu numeric) realizată pentru liniile cu același clasament. Asta ar sorta "$lvl=17" înainte de "$lvl=2".
  • @St é phaneChazelas vă mulțumim că ați subliniat.
  • Pentru a parafraza, -n și -g sunt redundante aici, deoarece intrarea nu este numerică . Deci, acest răspuns este înșelător, de unde și votul negativ (rețineți, de asemenea, că -g și opțiunile lungi sunt specifice GNU).
  • dar -g este general general-numeric- sortare
  • Că ' este încă pentru sortarea valorilor numerice, diferența cu -n este că nu se limitează la numere întregi zecimale. Acest lucru ar fi în continuare sortat "$lvl=17" înainte de "$lvl=2" ca parte a sortării de ultimă instanță.

Răspuns

sort -n este ceea ce doriți să utilizați. Se sortează după cum sortăm numerele. sort -k 2 -n file1

Comentarii

  • Dar OP dorește să sorteze în ordine crescătoare, care este implicit. De ce sugerați ordinea inversă?
  • cele de mai sus sunt corecte atunci când câmpurile sunt separate cu file sau spații și nu vor funcționa în OP .

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *