Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

1

235
Views
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 answers
Answer question

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 Report

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!