使用 awk 每隔两行添加数字

使用 awk 每隔两行添加数字

我需要每隔两行添加数字并打印总和。

前任:

x  
1  
2  
y  
3  
4  

我需要输出:

x 3  
y 7

答案1

这是一种方法,使用pr公用事业和 awk。

使用以下输入:

$ cat ip.txt 
x  
1  
2  
y  
3  
4  

首先将输入文件转换为三列输入,然后使用 awk:

$ pr -3at ip.txt | awk '{print $1, $2+$3}'
x 3
y 7

另一种方式是getline <var>

以这种方式使用的 getline 命令仅设置变量 NR、FNR 和 RT(当然还有 var)。记录没有拆分为字段,因此字段的值(包括$0)和 NF 的值不会改变。

$ awk '{getline a; getline b; print $0 a+b}' ip.txt 
x  3
y  7

答案2

另一种方法,利用awk的getline语句。

$ awk '{a=$0;getline;b=$1;getline;print a,b+$1}' ip.txt
x 3
y 7
$

相关内容