通过shell / python中的某个字段对文本文件进行排序

时间:2013-03-19 13:56:14

标签: python linux bash

我有一个类似于此的数据日志文件(例如,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 shell或python按第二个字段对数据日志文件进行排序。这意味着输出文件如下所示:

  

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

我怎么能用shell脚本或python来实现呢?也许最好附加一个指示每一行等级的尾部字段(1,2,3,...)最终目标是在第二个字段中绘制gnuplot中的日志文件

2 个答案:

答案 0 :(得分:2)

从bash命令行,尝试sort(1)命令:

$ sort -k2,2 -n -o log.dat log.dat

答案 1 :(得分:1)

试试这个:

$ sort -k2 -n inputFile > outputFile

其中:

  • -n, - 数字 - 排序           根据字符串数值进行比较
  • -k, - key = POS1 [,POS2]           在POS1(原点1)开始一个键,在POS2(默认行尾)
  • 结束

N.B。 -t, - field-separator = SEP使用SEP代替非空白到空白转换,因此我们使用默认字段分隔符