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