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?
Ah, that already answers my original question. A pity!
If cleaner is all you want, and you don’t specifically care about the tool, maybe look at
pyp
Ah, I could probably use Perl or something as well. I was hoping
awk
could do it though. But thank you, I hadn’t heard aboutpyp
before!