数値ソートを使用したUNIXのsortコマンド


10

私はfile1を持っています:

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

File2欲しい:

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

基本的にファイルの数値的な並べ替え1。


sortオプションなしでFile1でプレーンUnixを実行すると、File2が表示されます。何が違うの?この質問から何を残していますか?
— スコット

回答:


17

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

sort -V

私はこのオプションを頻繁に使用しています...

ある方向ではls -v、version-sort ls。


10

次sort -nの部分でソートするように指示する必要があります=:

sort -t = -k 2n

最近これを探していました^^。しかし、もう一つQ.何をしますか-k2n?それは数値ソートに関連していますか?ありがとうございました。
— αғsнιη

2
@KasiyA -kはソートキーを定義します。詳細については、manページを参照してください。-k2n2番目のフィールドで始まり、行の終わりで終わる並べ替えキーを定義し、数値の並べ替えキーにします。
— ステファンChazelas

0

並べ替えを使用:

sort -n file1 > file2

-n、-numeric-sort
は文字列数値に従って比較します

 sort -g file1 > file 2

-g、-general-numeric-sort


3
いいえ、sort -n数字で始まっていないため、これらの行はすべて同じランキングになります。それらを並べ替える理由は、同じランキングの行に対して行われる最後の手段である全行並べ替え(字句ではなく、数値ではありません)です。それは"$lvl=17"前にソートされます"$lvl=2"。
— ステファンChazelas

@StéphaneChazelas指摘してくれてありがとう。
— Hackaholic 2014年

言い換える-nと-g、入力は数値ではないため、ここでは冗長です。したがって、この回答は誤解を招くものであり、したがって反対投票です(また-g、長いオプションはGNU固有であることに注意してください)。
— ステファンChazelas

しかし、-gは一般的な数値ソートに
— 適してい

それでも数値の並べ替えは可能ですが、-n10進整数に限定されないという違いがあります。それでも、最後のソートの一部として"$lvl=17"以前に"$lvl=2"ソートされます。
— ステファンChazelas

0

私は、あなたが実行するだけで動作することを発見しましたsort -h。彼らはそれを呼びます--human-numberic-sort。

sort -h file1 > file2

-1

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


2
しかし、OPは昇順(デフォルト)でソートしたいと考えています。なぜ逆順を提案するのですか?
— G-Manは 'Reinstate Monica'を

上記は、フィールドがタブまたはスペースで区切られている場合に正しく、OPの場合は機能しません。
— αғsнιη
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.