问题描述:一个描述频率分布的文件,第一列是数据(数值),第二列是相应数据出现的频率。要求逐行累加,得到累积分布。文件大于10万行。
awk 'BEGIN{x=0} {x=x+$2; a[$1]=x} END{for (i in a) print i,"\t",a[i]}' input.dat > output.dat
这个方法出来之后第一列基本的排序是乱的,然后需要在排序:
sort -n -k1 output.dat > sortedOutput.dat
选项n表示按数值排序, k1表示按第一列排序。
不知道有什么聪明的办法可以直接在awk里输出排序好的……