使用 awk 从相邻列和连续行中减去数字

使用 awk 从相邻列和连续行中减去数字

我有一个制表符分隔的文件,如下所示:

NZ_CP023599.1   WP_003911075.1  302845  305406
NZ_CP023599.1   WP_003898428.1  471171  472583
NZ_CP023599.1   WP_003402248.1  534387  535157
NZ_CP023599.1   WP_003402301.1  552556  553950
NZ_CP023599.1   WP_003402318.1  558837  559697

我需要从下一行第三列的数字中减去每行第四列的​​数字,然后将下一行的差值打印为第五列。

输出如下所示:

NZ_CP023599.1   WP_003911075.1  302845  305406  
NZ_CP023599.1   WP_003898428.1  471171  472583  165765
NZ_CP023599.1   WP_003402248.1  534387  535157  61804
NZ_CP023599.1   WP_003402301.1  552556  553950  17399
NZ_CP023599.1   WP_003402318.1  558837  559697  4887

我该如何使用 awk 来解决这个问题?

答案1

您可以按如下方式执行此操作。推迟除第一行之外的减法,但获取其最后一列值作为后续行的输入。

awk -F'\t' 'BEGIN { OFS = FS } NR == 1 { last = $4; print;  next }{ $5 = $3 - last; last = $4  }1' file

答案2

awk -F\\t '{ if (length(prev4)>0) { col5 = FS ($3-prev4) }; print $0 col5; prev4 = $4 }' InputFile

相关内容