Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Re: how to use "if" with awk?

1 view
Skip to first unread message
Message has been deleted

Bob Proulx

unread,
Sep 11, 2008, 12:37:37 PM9/11/08
to Chris, help-gn...@gnu.org
Chris wrote:
> I'm trying to use an if query in combination with awk.

I am not an awk syntax expert but AFAIK you don't want to split up the
awk program string into separate arguments. Quote the entire program
into one string argument. I think that is the root of your problem.
Your example shows an "if" in program argument one and the rest of the
program in program argument two.

> I'm therefore using this commandline:
> n@test ~]$ gawk if '($8<0.001) {print "SNP:" $2 " P="$8}' Batch_Call_dev-bs.model.P1.model

I would do that this way using pattern-action pairs where the pattern
acts as an if statement. It just seems the most awk-ish way to me.

gawk '$8<0.001 {print "SNP:" $2 " P="$8}' Batch_Call_dev-bs.model.P1.model

I tested with this:

printf "1 one\n2 two\n3 three\n" | awk '$1<3 {print $0}'
1 one
2 two

But using the awk if control syntax in the awk program itself also
works okay. Here is a test using it:

printf "1 one\n2 two\n3 three\n" | awk '{ if ($1<3) {print $2;} }'
one
two

Hope that helps,
Bob


0 new messages