我有一个制表符分隔的文件,如下所示:
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
Run Code Online (Sandbox Code Playgroud)
我需要从下一行的第 3 列中的数字中减去每行第 4 列中的数字,然后将下一行中的差值打印为第 5 列。
输出将如下所示:
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
Run Code Online (Sandbox Code Playgroud)
我如何使用 awk 解决这个问题?
您可以按如下方式执行此操作。推迟除第一行以外的减法,但将其最后一列值作为后续行的输入。
awk -F'\t' 'BEGIN { OFS = FS } NR == 1 { last = $4; print; next }{ $5 = $3 - last; last = $4 }1' file
Run Code Online (Sandbox Code Playgroud)