查找每个xyz条目和最后一个条目之间的距离

时间:2019-03-23 21:44:05

标签: awk sed

我很难编写一个awk / sed代码来系统地查找每一行和最后一行之间的距离。更具体地说,假设我有一个如下所示的文件f1。

1 2 3
4 5 6
7 8 9
.
.
.
51 52 53
30 31 32

其中第一列是x坐标,第二列是y坐标,第三列是z坐标。如何创建包含第一行和最后一行之间的距离(即(1,2,3)和(30,31,32)之间的距离),第二行和最后一行,第三行和最后一行的文件,依此类推,直到倒数第二行和最后一行。如果f1有n行,那么该文件(我们将其称为f2)将具有n-1行。

我已经坚持了很长时间,但是任何帮助将不胜感激。谢谢!

1 个答案:

答案 0 :(得分:1)

使用tac首先获得最后一行:

$ tac file | awk '(NR == 1){ x=$1; y=$2; z=$3; next } {
    print sqrt((x-$1)^2 + (y-$2)^2 + (z-$3)^2)
}' | tac
50.2295
45.0333
39.8372
36.3731