例に従って:FILE.TXTの含量:
Linuxコマンド:SORT、フィールドの数値
100 foo
2 bar
300 tuu
'ソート-k 1,1 FILE.TXT'、行の順序は、意志使用
2 bar
100 foo
300 tuu
どのように我々は絶対数値値に基づいて、数字からなるフィールドを並べ替えることができます?私たちが期待しているものの、変わっていませんか
例に従って:FILE.TXTの含量:
Linuxコマンド:SORT、フィールドの数値
100 foo
2 bar
300 tuu
'ソート-k 1,1 FILE.TXT'、行の順序は、意志使用
2 bar
100 foo
300 tuu
どのように我々は絶対数値値に基づいて、数字からなるフィールドを並べ替えることができます?私たちが期待しているものの、変わっていませんか
はあなたが数値の並べ替えオプションを使用する必要がありますので、ここでman page for sort ...
-n, --numeric-sort compare according to string numerical value
での例です...
sort -n filename
sort -n
またはsort --numeric-sort
を使用してください。
をのぞき見してください:
sort -n -k 1,1 File.txt
他のほとんどの回答は、
sort -n
を参照してください。ただし、これは負の数値ではわかりません。ここで私は入力ファイル
のFedora 9にソートバージョン6.10で得た結果は次のとおりです。
-0.907928466796875
-0.61614990234375
1.135406494140625
0.48614501953125
-0.4140167236328125
出力:明らかに数値によって順序付けされていない
-0.4140167236328125
0.48614501953125
-0.61614990234375
-0.907928466796875
1.135406494140625
。
次に、より正確な答えはsort -n
を使用することですが、すべての値が正の場合にのみ使用されると思います。この例ではsort -g
リターンだけで同じ結果を使用して
P.S:
編集:
ロケール設定は、マイナス記号が順序( see here)にどのように影響するかに影響のようが見えます。適切な結果を得るために、私はちょうどでした:
LC_ALL=C sort -n filename.txt
警告と編集のための+1。 –
echo " Enter any values to sorting: "
read n
i=0;
t=0;
echo " Enter the n value: "
for((i=0;i<n;i++))
do
read s[$i]
done
for((i=0;i<n;i++))
do
for((j=i+1;j<n;j++))
do
if [ ${s[$i]} -gt ${s[$j]} ]
then
t=${s[$i]}
s[$i]=${s[$j]}
s[$j]=$t
fi
done
done
for((i=0;i<n;i++))
do
echo " ${s[$i]} "
done
免責事項を上記のmanページを参照してください参照してください:私はこの質問にはずっと前に答えたけど、多分これは質問のいくつかの訪問者への参考になります。
あなたが期待どおりに動作しません、その後sort -n
でソートログのローリングの例ファイル名のために、テキスト&数字を混在している文字列をソートしている場合:その場合はオプション-V
で
$ ls |sort -n
output.log.1
output.log.10
output.log.11
output.log.12
output.log.13
output.log.14
output.log.15
output.log.16
output.log.17
output.log.18
output.log.19
output.log.2
output.log.20
output.log.3
output.log.4
output.log.5
output.log.6
output.log.7
output.log.8
output.log.9
は、トリックを行います。
manページから$ ls |sort -V
output.log.1
output.log.2
output.log.3
output.log.4
output.log.5
output.log.6
output.log.7
output.log.8
output.log.9
output.log.10
output.log.11
output.log.12
output.log.13
output.log.14
output.log.15
output.log.16
output.log.17
output.log.18
output.log.19
output.log.20
:
あなたは、次のコマンドを実行する必要があります-V, --version-sort natural sort of (version) numbers within text
これは私を立ち上げたので、ありがとう!私のcygwin上で私を台無しにしたもう一つのことは、文字を取り除いて数字だけを残すために 'ls'を' sed'で置き換えても、明らかに色付きの出力が物事にも影響していたことです。したがって、 'ls --color = never'を実行することによっても違いが生じました。 –
:
sort -n -k1 filename
それを行う必要があること:)
は、人々をあなたのすべてをありがとう!これは配線されています。なぜなら、そのマニュアルページを何度も前後に見て、私はそのオプションを見ませんでした。ああ、私は簡略化されたマニュアルページにいました。くそー! – lukmac
時にはmanページを掘るのが難しい場合があります... – Stephan