Você precisa substituir a expressão regular /^\[[0-9]+\]/
, que corresponde apenas a um ou mais dígitos entre colchetes, com uma expressão regular que corresponda à sua entrada de ponto flutuante.
Por exemplo, tomando a expressão
[-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?
para um número de ponto flutuante com expoente do Números de pontos flutuantes correspondentes com uma expressão regular de Jan Goyvaerts e substituindo-o no seu código awk:
awk 'BEGIN{body=0}
!body && /^\/\/$/ {body=1}
body && /^\[/ {print > "first_"FILENAME}
body && /^pos/{$1="";print > "second_"FILENAME}
body && /^[01]+/ {print > "third_"FILENAME}
body && /^\[[-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?\]/ {
print > "first_"FILENAME
print substr($0, 2, index($0,"]")-2) > "fourth_"FILENAME
}' file
com o seu exemplo de entrada em file
, agora você deve obter
$ cat fourth_file
2.04545e+2
29