lajittelukomento unix-numerolajittelulla

Minulla on tiedosto1:

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

Tiedosto2 I haluaa:

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

Lajittele periaatteessa numeerisesti tiedosto1.

Kommentit

  • Kun suoritan tavallisen Unix-tiedoston sort File1: lläsi ilman vaihtoehtoja, saan File2-tiedostosi. Mitä teet eri tavalla? Mitä jätät pois tästä kysymyksestä?

Vastaa

Pidän -V –version-sort: se käyttäytyy erittäin hyvin monissa tilanteissa sekoittamalla merkkijonoja ja numeroita

sort -V 

Käytän tätä vaihtoehtoa usein …

Jossakin suunnassa , ls -v versiolajittelulle ls.

Vastaa

Sinun on kerrottava sort -n lajitellaksesi osan = jälkeen:

sort -t = -k 2n 

Kommentit

  • Etsin äskettäin tätä ^^. Mutta vielä yksi kysymys. Mitä -k2n tekee? Liittyykö tämä numeeriseen lajitteluun? kiitos.
  • @KasiyA -k määrittelee lajitteluavaimen. Katso lisätietoja man-sivulta. -k2n määrittelee lajitteluavaimen, joka alkaa toisesta kentästä ja päättyy rivin loppuun, ja tekee siitä numeerisen lajitteluavaimen.

Vastaa

Huomasin, että suoritat vain sort -h, se toimii. He kutsuvat sitä --human-numberic-sort.

sort -h file1 > file2 

Vastaa

käytä lajittelua:

sort -n file1 > file2 

-n, –numeric-sort
vertaa merkkijonon numeerisen arvon mukaan

 sort -g file1 > file 2 

-g, –general-numeric-sort

Kommentit

  • Ei, kaikki ne riveillä on sama sijoitus kuin sort -n, koska ne eivät ' aloita numerolla. Syy siihen, miksi he lajittelevat ne, on viimeisen keinon koko rivin lajittelu (leksikaalisesti, ei numeerisesti), joka on tehty saman rankingilla oleville linjoille. Se lajittelisi "$lvl=17" ennen "$lvl=2".
  • @St é phaneChazelas kiitos huomautuksesta.
  • Muokkaamalla -n ja -g on tässä tarpeeton, koska syöte ei ole numeerinen . Joten tämä vastaus on harhaanjohtava, joten alhainen ääni (huomioi myös, että -g ja pitkät vaihtoehdot ovat GNU-spesifisiä).
  • mutta -g on hyvä yleinen-numeerinen- lajittelu
  • Se, että ' on edelleen numeeristen arvojen lajittelussa, ero -n: n kanssa on se, että se ' eivät rajoitu desimaalilukuihin. Se lajittelisi silti "$lvl=17" ennen "$lvl=2" osana viimeisen keinon lajittelua.

Vastaus

sort -n on mitä haluat käyttää. Se lajittelee, kun lajittelemme numeroita. sort -k 2 -n file1

Kommentit

  • Mutta OP haluaa lajitella nousevassa järjestyksessä, mikä on oletusarvo. Miksi ehdotat käänteistä järjestystä?
  • yllä oleva on oikein, kun kentät erotetaan välilehdillä tai välilyönneillä eivätkä ne toimi OP ' s tapaus.

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *