gnu sortの--general-numeric-sortオプションと--numeric-sortオプションの違いは何ですか?質問する

gnu sortの--general-numeric-sortオプションと--numeric-sortオプションの違いは何ですか?質問する

sort2種類の数値ソートを提供します。これはマニュアルページからの抜粋です:

   -g, --general-numeric-sort
          compare according to general numerical value

   -n, --numeric-sort
          compare according to string numerical value

違いは何ですか?

ベストアンサー1

一般的な数値ソートでは、数値を浮動小数点数として比較します。これにより、1.234E10 などの科学的記数法が可能になりますが、処理速度が遅く、丸め誤差の影響を受けます (1.2345678 が 1.2345679 の後に来る可能性があります)。数値ソートは、10 が 9 の後に来ることを認識している通常のアルファベット ソートです。

見るhttp://www.gnu.org/software/coreutils/manual/html_node/sort-invocation.html

'-g' '--general-numeric-sort' '--sort=general-numeric' 標準 C 関数 strtod を使用して各行のプレフィックスを倍精度浮動小数点数に変換し、数値的にソートします。これにより、浮動小数点数を 1.0e-34 や 10e100 などの科学的記数法で指定できます。LC_NUMERIC ロケールによって小数点文字が決まります。オーバーフロー、アンダーフロー、または変換エラーは報告しません。次の照合シーケンスを使用します。数字で始まっていない行 (すべて等しいとみなされます)。一貫性があるがマシンに依存する順序の NaN (IEEE 浮動小数点演算での「Not a Number」値)。負の無限大。昇順の数値順序の有限数 (-0 と +0 は等しい)。正の無限大。

このオプションは他に選択肢がない場合にのみ使用してください。このオプションは --numeric-sort (-n) よりもはるかに遅く、浮動小数点に変換するときに情報が失われる可能性があります。

'-n' '--numeric-sort' '--sort=numeric' 数値でソートします。各行の先頭に数字が付き、オプションの空白、オプションの '-' 記号、および 0 個以上の数字 (3 桁ごとの区切りで区切られる場合もあります) で構成され、オプションで小数点文字と 0 個以上の数字が続きます。空の数字は '0' として扱われます。LC_NUMERIC ロケールは、小数点文字と 3 桁ごとの区切り文字を指定します。デフォルトでは、空白はスペースまたはタブですが、LC_CTYPE ロケールで変更できます。

比較は正確であり、丸め誤差はありません。

先頭の「+」も指数表記も認識されません。このような文字列を数値的に比較するには、--general-numeric-sort (-g) オプションを使用します。

おすすめ記事