使用 awk 进行电子表格样式的操作

使用 awk 进行电子表格样式的操作

我有一个数据文件:

1
2
3
4

现在我想添加第一个和第二个数字,第二个和第三个数字等等并接收数据文件:

1 
2 3
3 5
4 7

然后去掉第一行得到:

2 3
3 5
4 7

我本可以使用电子表格,但我需要使用 gnuplot 进行绘图。所以我真的想使用 awk 来完成这项任务。

答案1

这在 中确实是微不足道的awk。默认情况下,awk将读取其输入文件并应用您在每一行上告诉它的任何脚本。它将在空格上分割行(默认情况下,您可以使用 来选择另一个分隔符-F),第一个字段将为$1,第二个字段$2将以此类推。

考虑到这一点,您需要的是一个简单的脚本,i)将上一行的值保存在变量中,ii)如果我们有以前的值(因此,如果这不是第一行),则打印当前的值第一个字段加上最后一行和当前第一个字段的总和。换句话说,这个:

$ awk '{if(last){print $1, $1+last;} last=$1}' file 
2 3
3 5
4 7

或者,等价地

awk 'last != "" { print $1, $1 + last } { last = $1 }' file

或者,

awk 'NR > 1 { print $1, $1 + last } { last = $1 }' file

相关内容