user2296424
user2296424

Reputation:

Printing lines which have a field number greater than, in AWK

I am writing a script in bash which takes a parameter and storing it;

threshold = $1

I then have sample data that looks something like:

5 blargh
6 tree
2 dog
1 fox
9 fridge

I wish to print only the lines which have their number greater than the number which is entered as the parameter (threshold).

I am currently using:

awk '{print $1 > $threshold}' ./file

But nothing prints out, help would be appreciated.

Upvotes: 15

Views: 37835

Answers (1)

FatalError
FatalError

Reputation: 54551

You're close, but it needs to be more like this:

$ threshold=3
$ awk -v threshold="$threshold" '$1 > threshold' file

Creating a variable with -v avoids the ugliness of trying to expand shell variables within an awk script.

EDIT:

There are a few problems with the current code you've shown. The first is that your awk script is single quoted (good), which stops $threshold from expanding, and so the value is never inserted in your script. Second, your condition belongs outside the curly braces, which would make it:

$1 > threshold { print }

This works, but the `print is not necessary (it's the default action), which is why I shortened it to

$1 > threshold

Upvotes: 34

Related Questions