我有一个包含一列数字的文件:
1
2
4
4
10
我想用awk计算每个数字之间的差异。输出应该是这样的:
1
2
0
6
我该怎么做?
答案 0 :(得分:17)
请尝试以下代码:
awk '
NR == 1{old = $1; next} # if 1st line
{print $1 - old; old = $1} # else...
' file.txt
1
2
0
6
答案 1 :(得分:16)
只是为了缩短......
% awk 'NR>1{print $1-p} {p=$1}' file
1
2
0
6
答案 2 :(得分:4)
如果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
答案 3 :(得分:3)
GNU代码awk
$awk '{p=f;f=$1} NR>1{print f-p}' file 1 2 0 6