2017-04-03 86 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"] 
    } 
}