How to grep rows that have value less than 0.2 in a specific column?

user3446084 picture user3446084 · Mar 21, 2014 · Viewed 11.6k times · Source
  ID RT      EZ    Z0      Z1      Z2    RHO     PHE 

 1889  UN    NA  1.0000  0.0000  0.0000  0.8765  -1  
 1890  UN    NA  1.0000  0.0000  0.0000  0.4567  -1  
 1891  UN    NA  1.0000  0.0000  0.0000  0.0012  -1  
 1892  UN    NA  1.0000  0.0000  0.0000  0.1011  -1  

I would like to grep all the IDs that have column 'RHO' with value less than 0.2, and the other columns are included for the selected rows.

Answer

fedorqui 'SO stop harming' picture fedorqui 'SO stop harming' · Mar 21, 2014

Use awk directly by saying awk '$field < value':

$ awk '$7<0.2' file
 1891  UN    NA  1.0000  0.0000  0.0000  0.0012  -1  
 1892  UN    NA  1.0000  0.0000  0.0000  0.1011  -1  

As RHO is the column 7, it checks that field.

In case you just want to print a specific column, say awk '$field < value {print $another_field}'. For the ID:

$ awk '$7<0.2 {print $1}' file
1891
1892