68user's page 掲示板

Prev< No. 1927> Next  [最新発言に戻る] [過去ログ一覧]
No. 1927 # ミング [E-mail] 2001/05/02 (水) 13:43:23
Awkを練習しています。

目的;
Data1というファイルに4ポイントの座標が書き込んであります。
c1 10 10
c2 20 20
c3 30 30
c4 40 40

この4ポイントを4x4=16個ある箱の一番左下とし、これを元に、残り15箱にはいる15x4=60ポイントの座標を求める。offset値はx=y=100とします。

コマンドラインで
awk '{for (i=0;(i,4);i=i+1) print $1"-"i+1, $2+"100"*i, $3}'
data1 > out1
で一番したの4箱ぶんをだし、

out1;
c1-1 10 10
c1-2 110 10
c1-3 210 10
c1-4 310 10
c2-1 20 20
c2-2 120 20
c3-3 220 20
..........
awk' '{temp=substr($1, 1,4);for (i=0;(i,4);i=i+1) print temp,
i+"1", $2, $3+"100"*i}' out1 > out2

out2

c1-1 1 10 10
c1-1 2 110 10
c1-1 3 210 10
c1-1 4 310 10
c1-2 1 10 110
c1-2 2 110 110
c1-2 3 210 110
..................

で全てを出す方法で目的は達成したのですが,それを一度で出したいと思い、下の様にしてみました。

"test.awk"
{for (i=0;(i<4);i++)
print ($1"-"i+"1", $2+"100"*i, $3) >> "out1"}
close ("out1")
{getline < "out1"
temp=substr($1, 1,4);for (j=0;(ij,4);j=j+1)
print temp, ij+"1", $2, $3+"100"*j}

#awk -f test.awk < data1 > out3

しかし、data1のFNR=4の場合out3は16行まででとまってしまうので、わざわざdata1のFNRを64にしてし、全ての値をだしました。

まだよく理解できていないので、どうしてなのかがわかりません。ご指導
お願い致します。

Prev< No. 1927> Next  [最新発言に戻る] [過去ログ一覧]