如何使用awk与for循环?

时间:2014-06-08 20:05:20

标签: linux awk

我有一个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

任何想法怎么做?

1 个答案:

答案 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