我需要每隔两行添加数字并打印总和。
前任:
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
$