1

私はそのような行を持っています

5.7015   40828240     +152             -> explode(string(1), string(21)) /f.inc:467
5.7020   40834040     +192             -> explode(string(1), string(21)) /f.inc:467
5.7020   40834088     +160             -> explode(string(1), string(21)) /f.inc:467
5.7023   40834392     +192             -> explode(string(1), string(21)) /f.inc:467
5.7027   40835000     +152             -> explode(string(1), string(21)) /f.inc:467

このような出力を、数字がプラスから始まる列で並べ替えたいと思います(まったく同じ列で、数字がマイナスから始まることもあります)。

どういうわけか、3列目で出力をソートする必要があります。私はそれを試みcutましたが、結果に到達できません

4

4 に答える 4

3

coreutils sort を使用すると、次のように実行できます (一般的な数値ソート順)。

sort -k3,3g file

出力:

5.7015   40828240     +152             -> explode(string(1), string(21)) /f.inc:467
5.7027   40835000     +152             -> explode(string(1), string(21)) /f.inc:467
5.7020   40834088     +160             -> explode(string(1), string(21)) /f.inc:467
5.7020   40834040     +192             -> explode(string(1), string(21)) /f.inc:467
5.7023   40834392     +192             -> explode(string(1), string(21)) /f.inc:467

編集 - 新しい入力に適応

入力がOPにリストされているとおりである場合、関連する行を結合するために事前フィルタリングが必要だと思いますsed 'N; /\n *>=>/ s// >=>/; P; D'。まとめると:

< 1.xt.txt sed 'N; /\n *>=>/ s// >=>/; P; D' | sort -k3,3g

出力:

TRACE START [2013-01-15 13:17:48]
    0.0149    2268328       +0       -> realpath(string(36)) /htdocs/lib/functions.inc:2 >=> '/htdocs/lib'
    0.0016     942488      +80     -> header(string(38)) /htdocs/scripts/univexport.php:8 >=> NULL
    0.0016     941816     +160     -> error_reporting(long) /htdocs/scripts/univexport.php:4 >=> 22527
    0.0016     942008     +192     -> set_time_limit(long) /htdocs/scripts/univexport.php:5 >=> TRUE
    0.0148    2268328     +264       -> dirname(string(50)) /htdocs/lib/functions.inc:2 >=> '/htdocs/lib'
    0.0016     942408     +400     -> ini_set(string(12), string(5)) /htdocs/scripts/univexport.php:6 >=> '-1'
    0.0188    2651104  +382776       -> require_once(1/htdocs/lib/functions_common.inc) /htdocs/lib/functions.inc:2
    0.0014     941656  +941656   -> {main}() /htdocs/scripts/univexport.php:0
    0.0147    2268064 +1325576     -> include_once(/htdocs/lib/functions.inc) /htdocs/scripts/univexport.php:9

ヘッダーは文字列と見なされるため、先頭に並べ替えられます。一般的な数値の順序は次のようになります (GNU 並べ替えマニュアルから)。

  • 数字で始まらない行 (すべて等しいと見なされます)。

  • NaN (IEEE 浮動小数点演算における「非数」値) は一貫性がありますが、マシンに依存する順序です。

  • マイナス無限大。

  • 昇順の有限数 (-0 と +0 が等しい)。

  • プラス無限大。

于 2013-01-15T14:14:05.193 に答える
3

-k フラグを使用して、特定の列でソートするように sort に指示できます。

sort -g -k3 file

3列目にソートされます。-t は、デフォルトで空白に設定されているフィールド区切り記号を変更できます

編集:

並べ替えに一般的な数値並べ替えを使用する -g オプションを追加しました

于 2013-01-15T14:15:40.150 に答える
0
awk '{print $3}' file| sed s'/+//'
于 2013-01-15T14:20:06.110 に答える
0

「data.txt」でデータを取得したと仮定します。

それからただ使う

sort +2 -n data.txt

これにより、ファイルが 3 列目から並べ替えられます。

于 2013-01-15T14:22:57.513 に答える