bash中两个连续行中的值

时间:2020-05-12 08:35:54

标签: awk

我的文件格式如下:

0    10
1    20
2    40
5    50
...
a(i)    b(i)
a(i+1)  b(i+1)
a(i+2)  b(i+2)
...

我想对每行(第1行和第2行),(第2行和第3行)的子周期取平均值,就像这样:

(0+1)/2            (20+10)/(1+0)
(1+2)/2            (40+20)/(2+1)
(2+5)/2            (50+40)/(5+2)
...
[a(i)+a(i+1)]/2    [b(i)+b(i+1)]/[a(i)+a(i+1)]
[a(i+1)+a(i+2)]/2  [b(i+1)+b(i+2)]/[a(i+1)+a(i+2)]

awk命令可以这样做吗?

1 个答案:

答案 0 :(得分:1)

请考虑以下awk脚本。它使用两个变量pa,pb(a的上一个值,b的上一个值)进行行之间的计算

awk '
NR>1 { print ($1+pa)/2, ($2+pb)/($1+pa) }
{ pa=$1 ; pb=$2  }
' < input-file