gpt4 book ai didi

awk - 计算连续点的距离

转载 作者:行者123 更新时间:2023-12-01 09:12:51 24 4
gpt4 key购买 nike

我需要帮助!我有几点 ABCDEF... 位置如下:

A  0.00  0.50  0.10
B 1.00 2.50 2.00
C 0.70 0.88 1.29
D 2.13 2.90 0.11
E 1.99 0.77 0.69
...

我的目标是计算 AB、BC、CD、EF... 的距离以及它们的总和,输出形式如下:

sum_distance(AB)
sum_distance(AB+BC)
sum_distance(AB+BC+CD)
sum_distance(AB+BC+CD+DE)
sum_distance(AB+BC+CD+DE+EF)
....

我在互联网上发现 awk 可以做到并适用于我的情况。但是,屏幕上没有输出任何结果或错误。你能帮我解决这个问题吗?

bash 外壳,awk

awk 'FNR==NR { a[NR]=$0; next } { for (i=FNR+1;i<=NR-1;i++) {split(a[i],b); print $1 "-" b[1], sqrt(($2-b[2])^2 + ($3-b[3])^2 + ($4-b[4])^2) | "column -t" } NR--}'

输出:

2.934280150
4.728297987
7.470140434
9.682130488
11.92469598
......

最佳答案

对于这项琐碎的任务,您不需要如此复杂的脚本。试试这个:

awk 'NR>1{ printf "%.9f\n",s+=sqrt(($2-x)^2+($3-y)^2+($4-z)^2) }
{ x=$2;y=$3;z=$4 }' file

对于除A 之外的所有点,计算距离,将其添加到总和s 并打印总和。对于所有点,将坐标保存在 x, y, z 中以供下一次计算。它的输出与 gawk 类似:

2.934280150
4.728297987
7.470140434
9.682130488

关于awk - 计算连续点的距离,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55412201/

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