getline
函数读取下一行并将NR
计数器加1。使用getline
后,awk
会继续处理下一行。在大多数情况下,这是期望的行为。
在我的特殊情况下,我只需要查看下一行,根据其内容读取下一行或者需要回溯到上一行。
在awk
中如何回溯一行?我尝试手动设置NR
计数器为NR=NR-1
,但这并不起作用。或者是否有一种方法可以查看下一行而不改变NR
?
我需要向前看一行。简单地将该行保存在变量中并稍后引用它在这种情况下行不通。我正在尝试在awk
中实现一个可读性编程工具,其中主文件可能包含许多子文件。这样的子文件以"% file:file1"
之类的行开头。如果达到缩进较低的另一行或带有"% file:file2"
之类的行,则到达此类文件的结尾。
当我已经使用getline
读取了这一行时,所有匹配/% file:/
的行的规则集不会被使用。这就是为什么我想将NR
重置为上一行,然后awk
将再次读取与/% file:/
匹配的行并执行相应的规则。