gpt4 book ai didi

bash - 如何计算两个相邻字段之间的值差

转载 作者:行者123 更新时间:2023-11-29 09:05:16 24 4
gpt4 key购买 nike

我正在尝试计算两个相邻字段之间的距离。我的输入文件如下所示。

1 11160 11533 11556 11731 11822 11870 12149 12411 12461 12686 12829 13315 13420 ....

在输出中,我想保留第一个字段,后面的字段就是当前字段和下一个字段的差值,$2=$3-$2, $3 =$4-$3 ...

完整的输出如下:

1 373 23 175 91 48 279 262 50 225 143 486 105...

我该怎么做?

在我的代码中,每个值都打印为一个新行,数字也被反向打印。

BEGIN {FS=" "}
{
out[1]=$1
for (i=2;i<=NF-1;i++)
out[i]=$(i+1)-$i
}
END{
for (i in out)
print out[i]
}

这是当前输出

373 23 175 91 48 279 262 50 225 143 486 105 1

最佳答案

编辑: 在评论部分也添加了 anubhava 先生建议的代码。

awk '{s=$1; for (i=2; i<NF; i++) s = s OFS $(i+1) - $i; print s}' Input_file

能否请您尝试以下。

awk '{printf $1 OFS;for(i=2;i<NF;i++){printf("%d%s",$(i+1)-$i,i==(NF-1)?ORS:OFS)}}' Input_file

输出如下。

1 373 23 175 91 48 279 262 50 225 143 486 105

说明:也在这里添加说明。

awk '
{
printf $1 OFS ##Printing first field and OFS(whose value is space by default).
for(i=2;i<NF;i++){ ##Starting for loop from value of 2 to till NF-1 value where NF is number of field in current line.
printf("%d%s",$(i+1)-$i,i==(NF-1)?ORS:OFS) ##Printing diffrence of next field and current field and checking condition for 2nd print if i==NF-1 then new line else print space for that line.
} ##Closing for loop block here.
}
' Input_file ##Mentioning Input_file name here.

关于bash - 如何计算两个相邻字段之间的值差,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52629863/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com