Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

1

236
Visualizações
Imprimir min y max con awk

¿Por qué no funciona este script awk, donde quiero imprimir el mínimo y el máximo de una entrada con solo leer los datos una vez? También me gustaría inicializar la variable min y max con el primer valor de los datos.

Di que tengo un archivo

 a 14 a 34 a 234 a 2345 a 1 a 24

Estoy usando awk para imprimir el mínimo y el máximo con:

 cat test.txt | awk 'BEGIN {min=$2; max=$2} {if ($2 < min) {min=$2}; if ($2 > max) {max=$2} } END {print "min: " min "max: " max}'

Pero estoy obteniendo un resultado de:

 min: max: 2345

No entiendo por qué min está en blanco.

over 4 years ago · Santiago Trujillo
3 Respostas
Responde à pergunta

0

Hola! Ahora supongamos que tengo una lista con 8 columnas aprox. y quiero imprimir el maximo y el minimo de la columna 5 por ejemplo. Como tendria que hacer?

about 4 years ago · MARCOS STRASOSIER Relatório

1

El bloque BEGIN {} se procesa antes de la primera línea, por lo que $2 no está definido.

 $ cat file a 14 a 34 a 234 a 2345 a 1 a 24 $ awk 'NR == 1 { min = max = $2; next } $2 > max { max = $2 } $2 < min { min = $2 } END { print "min: " min ", max: " max }' file min: 1, max: 2345
over 4 years ago · Santiago Trujillo Relatório

1

Todos los valores numéricos en awk se almacenan en formato de punto flotante y no hay equivalentes a C INT_MIN , INT_MAX , por lo que simplemente debe elegir el rango de valores que desea manejar e inicializar su max al valor mínimo posible en el rango desea considerar y min hasta el valor máximo posible en el rango que desea considerar.

Para valores enteros con signo, simplemente elegir los valores mínimos/máximos para un entero con signo de 32 bits es razonable. Por ejemplo, puedes hacer:

 awk ' BEGIN { min=2147483647; max=-2147483648 } $2 > max { max=$2 } $2 < min { min=$2 } END { print "max: ", max ORS "min: ", min } ' file

Ejemplo de uso/resultado

Con sus datos en file , obtendría:

 $ awk ' > BEGIN { min=2147483647; max=-2147483648 } > $2 > max { max=$2 } > $2 < min { min=$2 } > END { print "max: ", max ORS "min: ", min } > ' file max: 2345 min: 1

Que es lo que estabas buscando.

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda