BEGIN {OFS=","; IGNORECASE=1} /@attribute/ {Attr++} /@attribute/ && $3 ~ /numeric/ {Num[Attr]=Attr; } /@data/ {In=1; FS=","} /@/ {print; next; } In && NF > 2 { for(I in Num) { if ($I !~ /\?/) { $I = ($I < 0.000001) ? 0.000001 : $I; $I = log($I); } } print $0 }