For a reason not worth mentioning here, I would like to write a somewhat more complex awk
script in which I would have to explain in detail what I am doing. (If only so that I’ll still know next week.) There doesn’t seem to be a way to wrap a list of conditions in GNU awk
, right?
This is what I tried:
command-that-prints-a-table | awk '
NR>1 && # Skip line 1
NF>2 && # Skip lines with only one column
substr($1,1,1) != "(" # Skip lines that start with a "("
{ print $1 }
'
Alas, that does not work - awk
skips the conditions entirely and only runs print $1
. It seems that escaping the newlines does not work either, which makes sense as the end of the lines are comments.
This would work:
command-that-prints-a-table | awk '
# - Skip line 1
# - Skip lines with only one column
# - Skip lines that start with a "("
NR>1 && NF>2 && substr($1,1,1) != "(" { print $1 }
'
But - my original code has a few more conditions - it is rather annoying to read and maintain. Is there an elegant way to fix this?
Thank you, the subshell idea is a good one!