在新列中打印行的下一个元素

时间:2014-06-05 14:27:46

标签: awk sed

我有一个非常大的文件格式:

1       10802
1       10876
1      10952
1      11813

我想用这种格式写它:

1    10802 10876 74 

第一列,第二列,第二列的第二个元素是第三列的第一个元素,$ 4 = $ 3- $ 2,即第四列应该是第3列和第2列的减法。

1 个答案:

答案 0 :(得分:2)

这可以做到:

$ awk 'NR==1{p=$2; next} {print $1, p, $2, $2-p; p=$2}' file
1 10802 10876 74
1 10876 10952 76
1 10952 11813 861

解释

  • NR==1{p=$2; next}当我们在第一行时,只需将第二列存储在变量p中并跳过行。
  • 从那里
  • {print $1, p, $2, $2-p; p=$2},继续打印值:1st col,p(存储值),2nd col,差异。然后,将第二列的值存储在变量p中,以用于下一个循环。