我有一个文件如下:
5 6
7 8
12 15
使用awk,如何找到一行第二列与下一行第一列之间的距离。在这种情况下,6到7和8和12之间的距离打印如下,第一行的距离设置为零:
5 6 0
7 8 1
12 15 4
答案 0 :(得分:2)
尝试:
awk 'NR==1{val=$2;print $0,"0";next} {print $0,$1-val;val=$2}' Input_file
现在添加说明太成功了。 检查NR == 1(当Input_file的第一行)时,然后创建一个名为val tp的变量,输入文件的第二个字段,然后用“0”打印当前行,然后执行next(这将跳过所有进一步的语句)。然后打印当前行以及$ 1-val的值,然后将val变量的值分配给当前行的$ 2。
答案 1 :(得分:1)
短 awk 方法:
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
- 被视为之前的行值)答案 2 :(得分:1)
awk '{print $0, (NR>1?$1-p:0); p=$2}' file