【发布时间】:2013-12-23 00:47:31
【问题描述】:
我有一个制表符分隔的文件,例如
Name S.No Points First
Jack 2 98 F
Jones 6 25
Mike 8 11
Jasmine 5 7
Gareth 1 85 F
Simon 4 76
Mark 11 12
Steve 17 8
Clarke 3 7
我想计算前 3 名获得者以及 F 线表示的第一个获得者与该组中其他两个获得者之间的差值,该差异是该组中总分的平均值。例如,琼斯和迈克在第一种情况下,西蒙和马克在第二种情况下。我希望我的输出是
Name S.No Points First
Jack 2 98 F
Jones 6 25 51.77
Mike 8 11 61.70
Gareth 1 85 F
Simon 4 76 4.78
Mark 11 12 44.68
计算百分比的公式在输出的最后一列是,例如案例1中的琼斯是
(Jack - Jones)*100/(Jack + Jones + Mike + Jasmine)
(98-25)*100/(98+25+11+7)= 51.77
我可以使用
选择前三行awk '$NF~/E/{c=3;next}c-->0'
但是,计算差异和百分比有点麻烦,因为我必须在消除前三行之前对分母求和。
【问题讨论】:
-
所以每个 F 开始一个新组(并标记要与其他组进行比较的组),并且您希望每个组的 F 记录和另外两个?总是以下两条记录吗?
-
没错,F开始了一个新组,我想要以下两条记录
标签: python perl bash shell awk