Using AWK finds smallest number in second column greater than x

I have a file with two columns,

sdfsd 1.3
sdfds 3
sdfsdf 2.1
dsfsdf -1 

if x is 2

I want to print sdfsdf 2.1

How to express it in awk (bash or sed is good too)

+3
source share
2 answers

This makes you wonder:

sort -k 2 -g  | awk '$2 >= 2 { print; exit }'

Tested and works on your example. If the second column is at least 2, it does not print anything.

+3
source

AWK:

BEGIN {
  min=0
  mint=""
  threshold=2
}
{
  if($2 > threshold && ($2 < min || min == 0)) {
    min = $2
    mint = $1
  }
}
END
{
  print mint, min
}
+1
source

Source: https://habr.com/ru/post/1748588/


All Articles