0
我有一个如下所示的文本文件。第一列是位置,第二列是位置,第三列是值。Bash Awk:开始和停止位置的窗口中值
1 10 200
1 11 150
1 12 300
2 13 400
2 14 100
2 15 250
3 16 200
3 17 200
3 18 350
3 19 150
...
我想计算某个窗口中值域的中位数。例如,可以说一个4行的窗口大小。下面是上面的示例数据预期的结果:第一列的
1 2 10 13 250
2 3 14 17 200
...
对于每一个窗口(4行),第一列的第一值(窗口内),最后的值(窗口内),第一值报告第二列的最后一个值和第三列的中间值。
我已经部分工作。下面的脚本打印第1列的最后一个位置,第2列的最后一个位置和平均值。
win=4
cat file.txt | awk -v win="$win" '{sum+=$3} (NR%win)==0 {print $1,$2,sum/win;sum=0}'
2 13 262.5
3 17 187.5
...
我如何获得每个窗口的初始位置和中位数?
多数民众赞成酷!正是我所期待的。可以通过检查忽略/跳过小于窗口大小的窗口吗? – rmf
这会忽略最后一个部分块,因为一些额外的逻辑创建一个'END'块并检查r是否小于(w-1),这将意味着最后一个块的部分并相应报告。 – karakfa