Using AWK to filter out column with numerical ranges

BurN135 picture BurN135 · Jan 4, 2012 · Viewed 85.1k times · Source

I'm relatively new to BASH and I'm trying to use awk to filter out column 1 data based on the 4th column of a text file. If the 4th column of data matches the range of x, then it'll output column 1 data. "x" is suppose to be a range of numbers 1-10 (1,2,3..10).

awk -F: '{ if($4=="x") print $1}' filename.txt

filename.txt 
sample1 0 0 4
sample2 0 0 10
sample3 0 0 15
sample4 0 0 20

Actual use:

awk -F: '{ if($4=="1-10") print $1}' sample.txt
output = sample1, sample2, sample3, sample4

It should be: sample1 sample2 only.

Is there is an error in the syntax that I'm not seeing or I could be possibly using this syntax completely wrong?

Answer

Kambus picture Kambus · Jan 4, 2012
awk '{ if ($4 >= 1 && $4 <= 10) print $1 }' sample.txt