Linux 如何将awk与for循环一起使用?
我有一个5列的文件Linux 如何将awk与for循环一起使用?,linux,awk,Linux,Awk,我有一个5列的文件 2 649 2 82 1 3 651 1 83 1 2 652 3 84 2 ... ... ... ... ... 第一列是n段中的点数,第二列是x坐标,第三列是delta x,当前x坐标与下一列之间的delta,类似地,第四列是y坐标,第五列是delta y。我需要生成线段中的所有点,因此输出应该是第一行中的数据
2 649 2 82 1
3 651 1 83 1
2 652 3 84 2
... ... ... ... ...
第一列是n
段中的点数,第二列是x
坐标,第三列是delta x,当前x
坐标与下一列之间的delta,类似地,第四列是y
坐标,第五列是delta y。我需要生成线段中的所有点,因此输出应该是第一行中的数据
649 82
650 82.5
从第二行中的数据
651 83
651.33 83.33
651.67 83.67
从第三行中的数据
652 84
653.5 85
你知道怎么做吗?这样就可以了:
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
请编辑标题。您还需要解释如何从输入中获得输出。分类了吗?还有别的办法吗?谢谢:)很乐意帮忙!最后一个问题,我想对值进行四舍五入,所以我不想打印83.67,我想打印84,我该怎么做?@e271p314你是说如果分数大于
.5
?如果是这样,您可以执行:awk'{for(i=0;i@e271p314ceil
不是awk函数。您可以尝试以下操作:awk'{for(i=0;在awk
中没有round或ceil函数。您可以使用此[round函数[()如果你愿意的话。但是我不明白为什么添加0.5
在所有情况下都不起作用。你有没有失败的例子?
awk '{for(i=0;i<$1;i++) printf "%.2f %.2f\n", $2+i*$3/$1, $4+i*$5/$1; }' file