Você pode passar por um arquivo duas vezes com a mesma sintaxe que você usaria para vários arquivos e apenas usar o mesmo arquivo duas vezes.
awk 'NR==1 { max=$1 ; min=$1 }
FNR==NR { if ($1>=max) max=$1 ; $1<=min?min=$1:0 ; next}
{ $2=($1-min)/(max-min) ; print }' file file
Explicação detalhada:
NR==1 { max=$1 ; min=$1 }
- adota valores do primeiro registro, você já fez isso
FNR==NR
- awk
com vários arquivos de entrada terá um valor NR
para o número do índice geral do registro (ou seja, como se todos os arquivos fossem concatenados) e um valor FNR
para o número do índice atual Arquivo. Se estes corresponderem, estamos processando o primeiro arquivo, ou seja, este bloco é executado apenas para o primeiro arquivo.
if ($1>=max) max=$1
- awk
a sintaxe da instrução if
é if (condition) action ; else if (condition) action ; else action
. Obviamente, as declarações if else
e else
são opcionais.
$1<=min?min=$1:0
- e alternativo if
sintaxe da instrução: condition?yes-action:no-action
. Isso requer e, em seguida, ação, o sem sentido 0
. Apenas pelo seu interesse.
next
- pula para o próximo arquivo, para que o bloco a seguir seja executado apenas para o segundo arquivo.
$2=($1-min)/(max-min) ; print
- faça uma normalização para [0,1] (você não tem uso para max
em seu exemplo, então usei isso ...) e imprima dados.