Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

1

230
Vistas
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 Respuestas
Responde la pregunta

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 Denunciar

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 Denunciar

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 Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda