使用 awk 获取下一行

使用 awk 获取下一行

我正在尝试从 bash 计算积分。

我有一个文件“data.log”,其中包含:

x1 y1
x2 y2
x3 y3
...
xn yn

我用 awk 创建了这个文件。现在我想操纵它以获得:

x2 x1 y2
x3 x2 y3
x4 x3 y4
...
xn xn-1 yn

我尝试过:

awk 'var=$1; print var; prev=var;' data.log

但这没有用。请你帮助我好吗?谢谢

答案1

在第一行之后,打印当前值和前一个值,并在所有行上记住第一个字段:

awk 'NR > 1 { print $1, prev, $2 } { prev = $1 }'

这会产生

$ for i in {1..4}; do printf "x%d y%d\n" $i $i; done | awk 'NR > 1 { print $1, prev, $2 } { prev = $1 }'
x2 x1 y2
x3 x2 y3
x4 x3 y4

相关内容