我正在尝试编写一个awk
脚本来检查某些条件并抛弃符合这些条件的行。
具体条件是丢弃文件的前两行以及以文本xyzzy:
开头的任何行。为此,我编写了代码:
awk '
NR < 2 {}
/^xyzzy:/ {}
{print}'
认为它会丢掉满足这两个条件之一的行,否则就会打印出来。
不幸的是,即使该行与其他两种模式中的一种匹配,似乎正在处理print
。
是否有类似C的continue
操作会在下一行移动而忽略当前行的所有其他条件检查?
我想我可以使用((NR > 1) && (!/^xyzzy:/)) {print}
之类的东西作为第三条规则,但这对我来说似乎相当难看。
或者,还有另一种方法吗?
答案 0 :(得分:33)
使用关键字next
作为您的操作
当您想迭代2个文件时,此关键字通常很有用;有时它是你想要处理两次的同一个文件。
你会看到以下习语:
awk '
FNR==NR {
< stuff that works on file 1 only >
next
}
{
< stuff that works on file 2 only >
}' ./infile1 ./infile2