NF
é uma variável interna do Awk cujo valor é definido para o número de campos no registro atual. Então
for(x=1;x<=NF;x++)
está circulando por todos os campos. O número 1
no final da expressão é uma forma abreviada de imprimir todo o registro, fazendo uso da ação padrão quando um padrão avalia "verdadeiro":
In an awk rule, either the pattern or the action can be omitted, but not both. If the pattern is omitted, then the action is performed for every input line. If the action is omitted, the default action is to print all lines that match the pattern.1
Para iniciar o número incremental de 0
em vez de 1
, você pode substituir o prefixo ++i
pelo postfix i++
:
awk '{for(x=1;x<=NF;x++)if($x~/0.00000/){sub(/0.00000/,i++)}}1'
ex.
$ echo 'foo 0.00000123 bar' | awk '{for(x=1;x<=NF;x++)if($x~/0.00000/){sub(/0.00000/,++i)}}1'
foo 1123 bar
enquanto
$ echo 'foo 0.00000123 bar' | awk '{for(x=1;x<=NF;x++)if($x~/0.00000/){sub(/0.00000/,i++)}}1'
foo 0123 bar
$