Extract lines containing certain value or greater

numeric datatext processing

I am working with a log file that contains entries that appear like this:

$Hostname1:  0x7FDBF4B1AB10 (  23698) waiting 100 seconds, NSDThread: for I/O completion on disk vd4
$Hostname2:  0x7F2D10A2F8C0 (  25393) waiting 200 seconds, NSDThread: for I/O completion on disk vd35
$Hostname3:  0x7F2D109F4290 (  25343) waiting 900 seconds, NSDThread: for I/O completion on disk vd11
$Hostname4:  0x7FDBF4B1AB30 (  23698) waiting 100 seconds, NSDThread: for I/O completion on disk vd40
$Hostname5:  0x7F2D10A2F830 (  25392) waiting 750 seconds, NSDThread: for I/O completion on disk vd13
$Hostname6:  0x7F2D109F4240 (  25342) waiting 500 seconds, NSDThread: for I/O completion on disk vd14

I would like to filter the lines where the wait time is greater than an arbitrary value (let's say 600 seconds). What's the best way to do this in bash?

Best Answer

This awk will get you what you want.

awk '$6 > 600 { print }' file

$Hostname3:  0x7F2D109F4290 (  25343) waiting 900 seconds, NSDThread: for I/O completion on disk vd11
$Hostname5:  0x7F2D10A2F830 (  25392) waiting 750 seconds, NSDThread: for I/O completion on disk vd13

or per @Kusalananda, this line is enough

awk '$6 > 600 ' file 
Related Question