我有两个具有重复一般结构的长文件,
File1:
AA 100
BB 10
File2:
AA 100
BB 1
我想从 File1 的 File2 的偶数行中减去第 2 列,但保留/打印其他信息,以便保留。
期望的输出:
AA 100
BB 9
为此我写了awk
:
awk '{a=$2;getline<f;$2-=a}!(NR % 2)' f=File1 File2
这会产生:
BB 9
哪个可以很好地进行减法并打印结果,但我在添加其他数据时遇到问题。
我怎样才能在减法的同时打印其他数据?
答案1
$ paste file1 file2 | awk '{print $1, $2 - (NR%2 ? 0 : $4)}'
AA 100
BB 9
或者如果您想要一个仅限 awk 的解决方案:
$ awk 'NR==FNR{if (!(NR%2)) a[NR]=$2; next} {$2 -= a[FNR]} 1' file2 file1
AA 100
BB 9
如果您正在考虑用于getline
此目的,请阅读http://awk.freeshell.org/AllAboutGetline所以您了解这样做的问题。
答案2
像这样的东西吗?
awk '{a=$2;getline<f;(NR%2)?$2:$2-=a;print}' f=File1 File2