我有一个数据文件:
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