Find minimum and maximum values based on column with associative array

Hello,
I need to find out the minimum and maximum values based on specific column, and then print out the entire row with the max value.

Infile.txt:
scf6 290173 290416 . + X_047241 T_00113118-1
scf6 290491 290957 . + X_047241 T_00113118-2
scf6 290898 290957 . + X_047241 T_00113119-3
scf6 291091 291903 . + X_047241 T_00113119-4
scf9 1281205 1281978 . + X_056323 T_00138418-1
scf9 1282596 1283255 . + X_056323 T_00138418-2
scf25 1360501 1360647 . - X_025043 T_00053809-1
scf25 1360774 1360836 . - X_025043 T_00053809-2
scf25 1361113 1361233 . - X_025043 T_00053809-3
scf29 943891 944500 . - X_029078 T_00064858-1
scf29 944629 944708 . - X_029078 T_00064858-2
scf29 944814 944859 . - X_029078 T_00064858-3
scf34 319914 320609 . - X_034278 T_00078927-1
scf34 320892 322061 . - X_034278 T_00078927-2
scf34 322151 322374 . - X_034278 T_00078927-3
scf34 319914 322061 . - X_034278 T_00078928-1
scf34 322151 322529 . - X_034278 T_00078928-2
Expected output:
290173 291903 scf6 291091 291903 . + X_047241 T_00113119-4
1281205 1283255 scf9 1282596 1283255 . + X_056323 T_00138418-2
1360501 1361233 scf25 1361113 1361233 . - X_025043 T_00053809-3
943891 944859 scf29 944814 944859 . - X_029078 T_00064858-3
319914 322529 scf34 322151 322529 . - X_034278 T_00078928-2

I have tried this one:

 awk '{if ($2 < min[$6]) min[$6]=$2; if ($3 > max[$6]) {max[$6]=$3; entry[$6]=$0;} next }END{for (i in max) {print max, entry}}'  infile.txt

and I only get

291903 scf6 291091 291903 . + X_047241 T_00113119-4
322529 scf34 322151 322529 . - X_034278 T_00078928-2
1283255 scf9 1282596 1283255 . + X_056323 T_00138418-2
1361233 scf25 1361113 1361233 . - X_025043 T_00053809-3
944859 scf29 944814 944859 . - X_029078 T_00064858-3

Note column 6 is the common field for keys of the associative array I was trying. The problem is with the min[$6], which is always set to 0 by default. Any help is greatly appreciated!

How about

awk '{if ($2 < min[$6] || !min[$6]) min[$6]=$2; if ($3 > max[$6]) {max[$6]=$3; entry[$6]=$0;} next }END{for (i in max) {print min, max, entry}}'  file
290173 291903 scf6 291091 291903 . + X_047241 T_00113119-4
319914 322529 scf34 322151 322529 . - X_034278 T_00078928-2
1281205 1283255 scf9 1282596 1283255 . + X_056323 T_00138418-2
1360501 1361233 scf25 1361113 1361233 . - X_025043 T_00053809-3
943891 944859 scf29 944814 944859 . - X_029078 T_00064858-3
1 Like

Thanks!
That's a quick fix and what I need!