awk '{for(i=1;i<=NF;i++) if($i>maxval) maxval=$i;}
NR%4==0 { print maxval ; maxval= -1}'
Bom dia,
Estou usando awk
e tentando determinar o valor máximo de vários conjuntos de dados em um arquivo. Digamos que eu tenha os dados:
1 2 3
4 5 6 7 8
9 8 7 6 5
4 3 2
1 2 3
4 6 7 8 7
7 8 7 6 5
4 3 2
Eu gostaria que a saída fosse:
9
8
Como cada quatro linhas é um subconjunto de dados, e 9 é o valor máximo do primeiro conjunto e 8 é o valor máximo do segundo. Estou colocando os dados acima no primeiro bloco de código para:
awk 'NR%4<4 || NR==4 {for(i=1;i<=NF;i++) if($i>maxval) maxval=$i;}; END { print maxval;}' > file
Mas só retorna o valor máximo de todo o arquivo:
9
Eu queria saber se é possível imprimir um valor máximo de cada n linhas (n = 4 aqui) em um comando awk, ou eu preciso dividi-lo? Eu pensava que a NR% 4 < 4 || NR == 4 diria ao resto da função para executar em cada quatro linhas, mas parece que está olhando para todos os dados e determinando apenas um 'maxval'.
Obrigado.
Alternativa, usando uma matriz.
awk '{x=split($0,a);asort(a);if(a[x]>maxval)maxval=a[x]}
NR%4==0 { print maxval ; maxval= -1}'
Tags awk