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

pax*_*blo 21 awk

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

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

awk '
    NR < 2    {}
    /^xyzzy:/ {}
              {print}'
Run Code Online (Sandbox Code Playgroud)

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

不幸的是,print即使该线与其他两种模式中的一种相匹配,它似乎也在被处理.

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

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

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

Sie*_*geX 33

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

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

你会看到以下成语:

awk '
FNR==NR {  
  < stuff that works on file 1 only >
  next
}
{
  < stuff that works on file 2 only >
}' ./infile1 ./infile2
Run Code Online (Sandbox Code Playgroud)

  • `next` 是 `awk` 中**最好的特性之一。:) (2认同)
  • @paxdiablo,你的意思是你应该尝试过Awkish`next`,对吗?Awk排在第一位.:-) (2认同)