我有一个包含一列数字的文件:
1
2
4
4
10
我想使用 awk 计算每个数字之间的差异。输出应该是这样的:
1
2
0
6
我该怎么做 ?
试试下面的代码:
awk '
NR == 1{old = $1; next} # if 1st line
{print $1 - old; old = $1} # else...
' file.txt
1
2
0
6
只是为了缩短...
% awk 'NR>1{print $1-p} {p=$1}' file
1
2
0
6
如果 awk 不是严格要求,则 shell 解决方案:
set -- $(< file)
p=$1; shift; while (($# > 0)); do echo $(($1 - p)); p=$1; shift; done
干燥机
set -- $(< file)
while (($#>0)); do [[ -n $p ]] && echo $(($1-p)); p=$1; shift; done
GNU awk的代码
$awk '{p=f;f=$1} NR>1{print fp}' 文件 1 2 0 6