首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何计算列中行之间的差异?

如何计算列中行之间的差异?
EN

Unix & Linux用户
提问于 2023-04-13 14:07:12
回答 2查看 54关注 0票数 1

如果我有下面的输出。有8行的一列:

代码语言:javascript
运行
复制
1
2
3
4
5
6
7
8

我想要这样的输出。

代码语言:javascript
运行
复制
1-3 
2-4
3-5
4-6
5-7
6-8

实际上,我只想知道这个差异的结果。

EN

回答 2

Unix & Linux用户

发布于 2023-04-13 18:35:11

这可能是你想要的:

代码语言:javascript
运行
复制
$ seq 8 | awk -v d=2 'NR>d{print a[(NR-d)%d] "-" $0} {a[NR%d]=$0}'
1-3
2-4
3-5
4-6
5-7
6-8

或者也许:

代码语言:javascript
运行
复制
$ seq 8 | awk -v d=2 'NR>d{print a[(NR-d)%d] - $0} {a[NR%d]=$0}'
-2
-2
-2
-2
-2
-2
票数 1
EN

Unix & Linux用户

发布于 2023-04-13 15:06:12

您可以使用带循环的awk来计算差异:

代码语言:javascript
运行
复制
awk '{a[NR]=$1} END {for(i=1;i<=NR-2;i++) print a[i]-a[i+2]}' data.txt

这个带有减号"-"的版本将输出结果为1-3等:

代码语言:javascript
运行
复制
awk '{a[NR]=$1} END {for(i=1;i<=NR-2;i++) print a[i]"-"a[i+2]}' data.txt
票数 0
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/742798

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档