web-dev-qa-db-ja.com

浮動小数点数で行を並べ替える方法

私はそのようなファイルを持っています:

name: xxx --- time: 5.4 seconds
name: yyy --- time: 3.2 seconds
name: zzz --- time: 6.4 seconds
...

次に、これらの浮動小数点数でこのファイルを並べ替えて、次のように新しいファイルを生成します。

name: yyy --- time: 3.2 seconds
name: xxx --- time: 5.4 seconds
name: zzz --- time: 6.4 seconds
...

私はコマンドを試してみましたawk '{print $5}' myfile | sort -gしかし、これは浮動小数点数のみを表示します。

6
Yves

GNU sortまたは互換性がある)を使用している場合は、その-gスイッチを使用して一般的な数値ソートを実行できます。

$ sort -g -k5,5 file
name: yyy --- time: 3.2 seconds
name: xxx --- time: 5.4 seconds
name: zzz --- time: 6.4 seconds

-k5,5は、5列目だけで並べ替えを実行するようにsortに指示します。

使用法

info sortページの詳細を覚えておいてください。

'--general-numeric-sort'
'--sort=general-numeric'
     Sort numerically, converting a prefix of each line to a long
     double-precision floating point number.  *Note Floating point::.
     Do not report overflow, underflow, or conversion errors.  Use the
     following collating sequence:

        * Lines that do not start with numbers (all considered to be
          equal).
        * NaNs ("Not a Number" values, in IEEE floating point
          arithmetic) in a consistent but machine-dependent order.
        * Minus infinity.
        * Finite numbers in ascending numeric order (with -0 and +0
          equal).
        * Plus infinity.

     Use this option only if there is no alternative; it is much slower
     than '--numeric-sort' ('-n') and it can lose information when
     converting to floating point.
8
slm