Awk 使用printf并递增字符串变量?
我试图输出一个字符串,但我需要在字符串前面增加一个数字,直到它结束。我正在从txt文件中提取数据Awk 使用printf并递增字符串变量?,awk,Awk,我试图输出一个字符串,但我需要在字符串前面增加一个数字,直到它结束。我正在从txt文件中提取数据 /Circle/{n=split($2,array,",") if (index(array[2],"x")){x=array[3]} else if (index(array[2],"y")){y=array[3]} else if (index(array[2],"z")){z=array[3]} else if (index(array[2],"r")){z=array[3]} else {
/Circle/{n=split($2,array,",")
if (index(array[2],"x")){x=array[3]}
else if (index(array[2],"y")){y=array[3]}
else if (index(array[2],"z")){z=array[3]}
else if (index(array[2],"r")){z=array[3]}
else { printf("CIRCLE/%.4f,%.4f,%.4f,%.4f\n", x, y, r, z) }}
这就是我现在拥有的,它的输出是这样的
圆圈/0.0000,0.0000,0.0000,1.0068
圆圈/10.0000,0.0000,0.0000,1.9068
圆圈/5.0000,0.0000,0.0000,1.8068
我需要它看起来像这样
CR1=圆/0.0000,0.0000,0.0000,1.0068
CR2=圆/10.0000,0.0000,0.0000,1.9068
CR3=圆圈/5.0000,0.0000,0.0000,1.8068将您的printf更改为:
printf("%sCIRCLE/%.4f,%.4f,%.4f,%.4f\n", "CR" ++i "=", x, y, r, z)
(另外,在print语句中不使用括号更为惯用):
将printf更改为:
printf("%sCIRCLE/%.4f,%.4f,%.4f,%.4f\n", "CR" ++i "=", x, y, r, z)
(另外,在print语句中不使用括号更为惯用):
您没有发布任何示例输入,因此这显然未经测试,但您的代码可能如下所示:
/Circle/ {
split($2,array,/,/)
if (array[2] ~ /[xyzr]/) {
v[array[2]] = array[3]
}
else {
printf "CR%d=CIRCLE/%.4f,%.4f,%.4f,%.4f\n", ++cnt, v["x"], v["y"], v["r"], v["z"]
}
}
您没有发布任何示例输入,因此这显然未经测试,但您的代码可能如下所示:
/Circle/ {
split($2,array,/,/)
if (array[2] ~ /[xyzr]/) {
v[array[2]] = array[3]
}
else {
printf "CR%d=CIRCLE/%.4f,%.4f,%.4f,%.4f\n", ++cnt, v["x"], v["y"], v["r"], v["z"]
}
}
非常感谢你!工作非常完美。
printf“CR%d=CIRCLE/%.4f、%.4f、%.4f、%.4f、%.4f\n”、++i、x、y、r、z
会更加明显。非常感谢!工作非常完美。printf“CR%d=CIRCLE/%.4f、%.4f、%.4f、%.4f、%.4f\n”、++i、x、y、r、z
会更明显。