1. ホーム
  2. unix

[解決済み] gnu sort の --general-numeric-sort と --numeric-sort オプションの違いは何ですか?

2022-09-17 20:06:15

質問

sort は2種類の数値ソートを提供します。これは man ページからです。

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

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

何が違うの?

どのように解決するのですか?

一般的な数値ソートは、浮動小数点数として数値を比較します。これは、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' ソートする。 数値的にソートします。 関数 strtod を使って数値でソートします。 各行の接頭辞を倍精度の浮動小数点数に変換するCの標準関数strtodを用いて 浮動小数点数に変換します。これにより 浮動小数点数の指定は のような科学的記数法で指定することができます。 や10e100のような科学的記数法で浮動小数点数を指定できる。LC_NUMERIC ロケール が小数点以下の文字を決定する。 文字を決定します。オーバーフロー、アンダーフロー、変換エラーは報告しない。 または変換エラーを報告しない。以下の照合順序を使用する。 以下の照合順序を使用します。 数字で始まらない行 (すべて等しいと見なす)。 NaNs ("Not a Number "値、IEEEでは 浮動小数点演算における "Not Number "値)を 一貫性があるが、マシンに依存する の順となります。 マイナス無限大。 有限 数値の昇順で (-0 と +0 は等しい)。 プラス 無限大

このオプションは、代替手段がない場合にのみ使用します。 このオプションは --numeric-sort (-n) よりもはるかに遅く、浮動小数点に変換する際に情報を失う可能性があります。 浮動小数点に変換する際に情報を失う可能性があります。

'-n' '--numeric-sort' '--sort=numeric' 数値でソートします。数値は各行の最初 各行の先頭を占め、空白、'-'記号、ゼロから構成されます。 空白、'-'記号、0桁以上の数字で構成されます。 で区切られた0桁以上の数字で構成されます。 で区切られた0桁以上の数字で構成され,オプションで の後に,小数点以下の文字 と0桁以上の数字で構成される。空の は,'0'として扱われる。ロケール LC_NUMERIC ロケールでは ロケールでは、小数点以下の文字と千 の区切り文字を指定します。デフォルトでは、空白はスペースまたはタブである。 スペースかタブですが、LC_CTYPE ロケールでこれを変更できます。 ロケールはこれを変更することができます。

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

先頭の'+'や指数表記は認識されません。 は認識されません。このような文字列を数値で比較するには このような文字列を数値的に比較するには --一般的な数値ソート (-g) オプションを使用します。