当一个条件被采取行动时,你如何获得进入下一行的awk?

时间:2012-01-04 06:39:56

标签: awk

我正在尝试编写一个awk脚本来检查某些条件并抛弃符合这些条件的行。

具体条件是丢弃文件的前两行以及以文本xyzzy:开头的任何行。为此,我编写了代码:

awk '
    NR < 2    {}
    /^xyzzy:/ {}
              {print}'

认为它会丢掉满足这两个条件之一的行,否则就会打印出来。

不幸的是,即使该行与其他两种模式中的一种匹配,似乎正在处理print

是否有类似C的continue操作会在下一行移动而忽略当前行的所有其他条件检查?

我想我可以使用((NR > 1) && (!/^xyzzy:/)) {print}之类的东西作为第三条规则,但这对我来说似乎相当难看。

或者,还有另一种方法吗?

1 个答案:

答案 0 :(得分:33)

使用关键字next作为您的操作

当您想迭代2个文件时,此关键字通常很有用;有时它是你想要处理两次的同一个文件。

你会看到以下习语:

awk '
FNR==NR {  
  < stuff that works on file 1 only >
  next
}
{
  < stuff that works on file 2 only >
}' ./infile1 ./infile2