使用AWK在同一列中的数字之间的差异

use*_*561 11 linux shell ubuntu awk

我有一个包含一列数字的文件:

1
2
4
4
10
Run Code Online (Sandbox Code Playgroud)

我想用awk计算每个数字之间的差异.输出应该是这样的:

1
2
0
6
Run Code Online (Sandbox Code Playgroud)

我该怎么做 ?

Gil*_*not 18

请尝试以下代码:

awk '
    NR == 1{old = $1; next}     # if 1st line 
    {print $1 - old; old = $1}  # else...
' file.txt
1
2
0
6
Run Code Online (Sandbox Code Playgroud)

说明

  • NR是从输入开始的当前记录的序号.在BEGIN动作中,值应为零.在END操作中,值应为处理的最后一条记录的编号.
  • 下一个陈述将导致放弃对当前输入记录的所有进一步处理.如果出现下一个语句或在BEGIN或END操作中调用,则行为未定义.


小智 16

只是为了缩短......

% awk 'NR>1{print $1-p} {p=$1}' file
1
2
0
6
Run Code Online (Sandbox Code Playgroud)