0

次のようなデータログファイル(たとえば、log.dat)があります(おもちゃの例):

s('2','3') 102.3993 2992 0.22 0.33
s('4','6') 105.44 2993 0.43 0.93
s('19','33') 99.93 28992 0.99 0.29
....(類似パターン)

bash シェルまたは python を使用して、データ ログ ファイルを 2 番目のフィールドで並べ替えたいと考えています。つまり、出力ファイルは次のようになります。

s('19','33') 99.93 28992 0.99 0.29
s('2','3') 102.3993 2992 0.22 0.33
s('4','6') 105.44 2993 0.43 0.93

シェルスクリプトまたはpythonを使用してそれを行うにはどうすればよいですか? おそらく、各行のランクを示す末尾フィールド (1、2、3、...) を追加する方がよいでしょう。最終的な目標は、gnuplot のログ ファイルを 2 番目のフィールドでプロットすることです。

4

2 に答える 2

2

bashコマンドラインから、sort(1)コマンドを試してください。

$ sort -k2,2 -n -o log.dat log.dat
于 2013-03-19T14:03:49.860 に答える
1

これを試して:

$ sort -k2 -n inputFile > outputFile

どこ:

  • -n, --numeric-sort 文字列数値による比較
  • -k, --key=POS1[,POS2] POS1 (オリジン 1) でキーを開始し、POS2 (デフォルトの行末) でキーを終了します。

NB -t, --field-separator=SEP 非空白から空白への遷移の代わりに SEP を使用するため、デフォルトのフィールドセパレータを使用しています

于 2013-03-19T14:06:04.850 に答える