减去awk中两个连续行的两个字段

减去awk中两个连续行的两个字段,awk,Awk,我的档案如下: 5 6 7 8 12 15 使用awk,如何查找一行的第二列与下一行的第一列之间的距离。在这种情况下,6和7之间的距离以及8和12之间的距离如下所示,第一行的距离设置为零: 5 6 0 7 8 1 12 15 4 尝试: 现在添加解释太成功了。 检查NR==1(当输入_文件的第一行存在时),然后创建一个名为val tp的变量输入_文件的第二个字段,然后用“0”打印当前行,然后执行下一步(这将跳过所有进一步的语句)。然后打印当前行以及$1-val的值,然后将val变量的值分配给

我的档案如下:

5 6
7 8
12 15
使用awk,如何查找一行的第二列与下一行的第一列之间的距离。在这种情况下,6和7之间的距离以及8和12之间的距离如下所示,第一行的距离设置为零:

5 6 0
7 8 1
12 15 4
尝试:

现在添加解释太成功了。 检查NR==1(当输入_文件的第一行存在时),然后创建一个名为val tp的变量输入_文件的第二个字段,然后用“0”打印当前行,然后执行下一步(这将跳过所有进一步的语句)。然后打印当前行以及$1-val的值,然后将val变量的值分配给当前行的$2。

Shortawk方法:

awk 'NR==1{ $3=0 }NR>1{ $3=$1-p }{ p=$2 }1' file
输出:

5 6 0
7 8 1
12 15 4

  • p=$2
    -捕获第二个字段值(
    p
    -视为前一行值)

向我们展示您遇到问题的代码…有
awk'{$0=$0FS(p?$1-p:0);p=$2}1'文件
,但是简洁性不是软件的理想属性,因为简洁性是最重要的。
5 6 0
7 8 1
12 15 4
awk '{print $0, (NR>1?$1-p:0); p=$2}' file