UNIXでのソートコマンドと数値ソート

file1があります:

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

File2 I必要なもの:

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

基本的に数値で並べ替えられたfile1。

コメント

  • File1でプレーンなUnix sortをオプションなしで実行すると、File2が取得されます。何が違うの?この質問から何を除外しますか?

回答

-V –version-sortが好きです:文字列と数字が混在する多くの状況で非常にうまく動作します

sort -V 

このオプションを頻繁に使用します…

ある方向に、ls -vバージョンソートls

回答

sort -nに、=の後の部分を並べ替えるように指示する必要があります:

sort -t = -k 2n 

コメント

  • 最近これを探していました^^。しかし、もう1つQ. -k2nとは何ですか?それは数値ソートに関連していますか?ありがとうございます。
  • @KasiyA -kはソートキーを定義します。詳細については、manページを参照してください。 -k2nは、2番目のフィールドで始まり、行の終わりで終わるソートキーを定義し、数値のソートキーにします。

回答

sort -hを実行するだけで、機能することがわかりました。彼らはそれを--human-numberic-sortと呼んでいます。

sort -h file1 > file2 

回答

use sort:

sort -n file1 > file2 

-n、-numeric-sort
文字列の数値に従って比較

 sort -g file1 > file 2 

-g、-general-numeric-sort

コメント

  • いいえ、すべて行は番号で始まらないため、sort -nと同じランクになります。'それらをソートする理由は、同じランクの行に対して行われる最後のリゾートのフルラインソート(数値ではなく字句)です。これにより、"$lvl=17""$lvl=2"の前に並べ替えられます。
  • @St é phaneChazelasは指摘してくれてありがとう。
  • 言い換えると、入力は数値ではないため、-n-gは冗長です。 。したがって、この回答は誤解を招くため、反対票を投じます(-gと長いオプションはGNU固有であることに注意してください)。
  • ただし、-gは一般的な数値です- sort
  • 'はまだ数値をソートするためのものですが、-nとの違いは'は10進整数に限定されません。それでも、最後の並べ替えの一部として、"$lvl=2"の前に"$lvl=17"が並べ替えられます。

回答

sort -nが使用したいものです。数字を並べ替えるときに並べ替えます。 sort -k 2 -n file1

コメント

  • しかし、OPは昇順で並べ替えたいと考えています。これがデフォルトです。なぜ逆の順序を提案するのですか?
  • フィールドがタブまたはスペースで区切られ、OP 'の場合。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です