我创建了一个单行程序,用于汇总csv文件中的每一行,从第二个条目开始。 但我希望从行总和中找到最高的数字
示例文件输出:有数千行
03/Mar/2016:00:14,19772,7494,11293,9467
03/Mar/2016:00:15,18041,13241,9715,8968
03/Mar/2016:00:16,17441,13534,9926,9301
03/Mar/2016:00:17,17709,14243,9022,9209
03/Mar/2016:00:18,16368,13535,8761,8313
03/Mar/2016:00:19,17074,13224,8868,7789
03/Mar/2016:00:20,16783,13666,9499,8763
03/Mar/2016:00:21,16665,12962,8821,8862
示例脚本: 这是我通过计算每一行而实现的,但只需要从计算的行中找到最高的数字。有什么想法吗?
awk 'BEGIN {FS=OFS=","} {sum=0; for(i=2;i<=NF;i++) {sum+=$i}; print $0,"sum:"sum,}' /tmp/101.20160304.csv
欢呼声
答案 0 :(得分:2)
awk非常有能力记住最大值。
awk -F, '
# for every row, calculate the sum
{sum = 0; for (i=2; i<=NF; i++) sum += $i}
# set the max value (if the first row, initialize the max value)
NR == 1 || sum > max {max = sum}
END {print max}
' file
对于您的样本数据,这是最大值:
50202
答案 1 :(得分:1)
您可以将awk输出传输到:
awk_output|sort -t':' -nrk4|head -1
这会按总和降序排序,然后选择第一行。当然你可以重写你的awk,一次性完成。