sorteeropdracht in unix met numeriek sorteer

Ik heb file1:

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

File2 I want:

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

In wezen numeriek soort bestand1.

Opmerkingen

  • Als ik een gewone Unix sort op je File1 draai, zonder opties, krijg ik je File2. Wat doe je anders? Wat laat je weg bij deze vraag?

Antwoord

Ik vind -V –version-sort: het gedraagt zich in veel situaties heel goed door strings en getallen te mixen

sort -V 

Ik gebruik deze optie heel vaak …

In de een of andere richting , ls -v for version-sort ls.

Antwoord

U moet sort -n vertellen om te sorteren op het gedeelte achter de =:

sort -t = -k 2n 

Reacties

  • Ik keek onlangs naar dit ^^. Maar nog een Q. Wat doen -k2n? Heeft dat te maken met numeriek sorteren? dank je.
  • @KasiyA -k definieert een sorteersleutel. Zie de man-pagina voor details. -k2n definieert een sorteersleutel die begint bij het tweede veld en eindigt aan het einde van de regel en maakt er een numerieke sorteersleutel van.

Answer

Ik ontdekte dat je gewoon sort -h uitvoert, het zal werken. Ze noemen het --human-numberic-sort.

sort -h file1 > file2 

Answer

use sort:

sort -n file1 > file2 

-n, –numeric-sort
vergelijk volgens de numerieke waarde van de string

 sort -g file1 > file 2 

-g, –general-numeric-sort

Reacties

  • Nee, al die regels hebben dezelfde rangorde met sort -n aangezien ze niet ' beginnen met een cijfer. De reden dat het ze sorteert, is de volledige lijnsortering in laatste instantie (lexicaal, niet numeriek) voor regels met dezelfde rangorde. Dat zou "$lvl=17" sorteren voor "$lvl=2".
  • @St é phaneChazelas bedankt voor het wijzen.
  • Om te parafraseren, -n en -g zijn hier overbodig omdat de invoer niet numeriek is . Dus dit antwoord is misleidend, vandaar de downvote (merk ook op dat -g en de lange opties GNU-specifiek zijn).
  • maar -g is goed algemeen-numeriek- sort
  • Dat ' nog steeds is voor het sorteren van numerieke waarden, het verschil met -n is dat het ' is niet beperkt tot decimale gehele getallen. Dat zou nog steeds "$lvl=17" voor "$lvl=2" sorteren als onderdeel van de sortering in laatste instantie.

Antwoord

sort -n is wat je wilt gebruiken. Het wordt gesorteerd zoals we getallen sorteren. sort -k 2 -n file1

Reacties

  • Maar het OP wil in oplopende volgorde sorteren, wat de standaard is. Waarom stel je de omgekeerde volgorde voor?
  • het bovenstaande is correct wanneer velden worden gescheiden door tabs of spaties en niet werken in OP ' s geval.

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *