如果我有下面的输出。有8行的一列:
1
2
3
4
5
6
7
8
我想要这样的输出。
1-3
2-4
3-5
4-6
5-7
6-8
实际上,我只想知道这个差异的结果。
发布于 2023-04-13 18:35:11
这可能是你想要的:
$ 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
或者也许:
$ seq 8 | awk -v d=2 'NR>d{print a[(NR-d)%d] - $0} {a[NR%d]=$0}'
-2
-2
-2
-2
-2
-2
发布于 2023-04-13 15:06:12
您可以使用带循环的awk来计算差异:
awk '{a[NR]=$1} END {for(i=1;i<=NR-2;i++) print a[i]-a[i+2]}' data.txt
这个带有减号"-"
的版本将输出结果为1-3
等:
awk '{a[NR]=$1} END {for(i=1;i<=NR-2;i++) print a[i]"-"a[i+2]}' data.txt
https://unix.stackexchange.com/questions/742798
复制相似问题