BEGIN { FS = "[ \t]*|[ \t]+|\[|\]" } /^:vertices/ { # vertex list starts (next line is # of vertices) getnvertices=1 # printf "found :vertices\n" next } { if (getnvertices) { nvertices = $1 # printf "%d vertices\n", nvertices getnvertices = 0 getvertices=1 vid = 0 } else if (getvertices && nvertices-- > 0) { if (NF > 3) { x = $1 y = $3 z = $5 } else { x = $1 y = $2 z = $3 } printf "v v%04d %10f %10f %10f;\n", vid++, x, y, z if (nvertices == 0) getvertices = 0 } } END { }