我有一个5列文件
2 649 2 82 1
3 651 1 83 1
2 652 3 84 2
... ... ... ... ...
第一列是n
段中的点数,第二列是x
坐标,第三列是delta x,当前x
坐标与下一个坐标之间的差值同样,第四列是y
坐标,第五列是delta y。我需要生成段中的所有点,因此输出应该来自第一行中的数据
649 82
650 82.5
来自第二行的数据
651 83
651.33 83.33
651.67 83.67
来自第三行的数据
652 84
653.5 85
任何想法怎么做?
答案 0 :(得分:2)
这样做:
awk '{n=$1; x=$2; dx=$3; y=$4; dy=$5; \
for(i=0;i<n;i++) printf "%.2f %.2f\n", x+i*dx/n, y+i*dy/n; }' file
您可以根据需要调整%.2f
。对于例如%.4f
打印4位数的分数。
为了清晰起见,我只使用了变量。否则,你可以简单地做:
awk '{for(i=0;i<$1;i++) printf "%.2f %.2f\n", $2+i*$3/$1, $4+i*$5/$1; }' file