2017-04-03 88 views
0

我想输出一个字符串,但我需要在字符串前增加一个数字,直到它结束。我正在从txt文件中提取数据。使用printf并递增地增加一个字符串变量?

/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) }} 

这是我现在和它的输出是这样

CIRCLE/0.0000,0.0000,0.0000,1.0068

CIRCLE/10.0000,0.0000,0.0000,1.9068

CIRCLE /5.0000,0.0000,0.0000,1.8068

我需要它看起来像这样

CR1 = CIRCLE/0.0000,0.0000,0.0000,1.0068

CR2 = CIRCLE/10.0000,0.0000,0.0000,1.9068

CR3 = CIRCLE/5.0000,0.0000,0.0000,1.8068

回答

0

您的printf改为:

printf("%sCIRCLE/%.4f,%.4f,%.4f,%.4f\n", "CR" ++i "=", x, y, r, z) 

(此外,这是稍微更地道,不使用与打印语句括号):

printf "%sCIRCLE/%.4f,%.4f,%.4f,%.4f\n", "CR" ++i "=", x, y, r, z 
+0

太谢谢你了!完美的作品。 – Fire02

+0

'printf'CR%d = CIRCLE /%。4f,%。4f,%。4f,%。4f \ n“,++ i,x,y,r,z'会更加明显。 –

2

你没有张贴任何样品输入,所以这显然是未经测试,但你的代码也许应该是这样的:

/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"] 
    } 
}