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

次の行の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

この問題を解決するためにawkをどのように使用できますか?

ベストアンサー1

次のようにこれを行うことができます。最初の行を除いて減算を延期しますが、最後の列の値を後続の行の入力として取得します。

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

おすすめ記事