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

标签 linux shell ubuntu awk

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

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

解释

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

关于linux - 使用 AWK 同一列中的数字之间的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17476879/

相关文章:

linux - 如何通过单个 IP 将流量从多个服务器路由到外部 API?

python - pip 没有得到当前版本

linux - 在 wget 命令中使用用户提供的 header 值的问题

Git卡在状态/添加/提交

Python 3.6.3 Idle 正在终止当前 session

c++ - Linux Manjaro 上的 Visual Studio 代码 C++ : IncludePath issue

linux - 从 *unix 分发到 Windows 时保留文件权限

linux - 如何在运行时检查进程然后退出否则删除并安装包

linux - Shell 脚本 - help-me 列出文件和子目录

linux - 未定义的图书馆引用,所以我怎么能找到正确的路径?