Awk 在新列中打印行的下一个元素
我有一个非常大的文件,格式如下:Awk 在新列中打印行的下一个元素,awk,sed,Awk,Sed,我有一个非常大的文件,格式如下: 1 10802 1 10876 1 10952 1 11813 1 10802 10876 74 我想用这种格式写: 1 10802 1 10876 1 10952 1 11813 1 10802 10876 74 第一列、第二列、第二列的第二个元素是第三列的第一个元素,并且$4=$3-$2,即第四列应该是第3列和第2列的减法。这可以使它: $ awk
1 10802
1 10876
1 10952
1 11813
1 10802 10876 74
我想用这种格式写:
1 10802
1 10876
1 10952
1 11813
1 10802 10876 74
第一列、第二列、第二列的第二个元素是第三列的第一个元素,并且$4=$3-$2,即第四列应该是第3列和第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
从这里开始,继续按如下方式打印值:第1列,{print$1,p,$2,$2-p;p=$2}
(存储值),第2列,差异。然后,将第二列的值存储在变量p
中,用于下一个循环p