Gawk 如何跳过打开/关闭范围模式的记录?

Gawk 如何跳过打开/关闭范围模式的记录?,gawk,Gawk,这是可行的,但它会打印第一个和最后一个记录,我想省略。如何做到这一点 它说:打开范围模式的记录和关闭范围模式的记录都匹配范围模式。如果不想对这些记录进行操作,可以在规则的操作中编写If语句,以将它们与感兴趣的记录区分开来。但没有例子。 我试过类似的东西 gawk'/',/'{1,FNR-1}文件 但它不起作用。 如果您有更好的方法来做到这一点,而不使用awk,那么就这么说。您可以使用两个单独的匹配语句和一个变量来实现 gawk '/<Lexer>/,/<\/Lexer>/

这是可行的,但它会打印第一个和最后一个记录,我想省略。如何做到这一点

它说:打开范围模式的记录和关闭范围模式的记录都匹配范围模式。如果不想对这些记录进行操作,可以在规则的操作中编写If语句,以将它们与感兴趣的记录区分开来。但没有例子。 我试过类似的东西 gawk'/',/'{1,FNR-1}文件 但它不起作用。
如果您有更好的方法来做到这一点,而不使用awk,那么就这么说。

您可以使用两个单独的匹配语句和一个变量来实现

gawk '/<Lexer>/,/<\/Lexer>/' file
这将匹配并将p设置为1,然后跳到下一行。当p为1时,它打印当前行。当它匹配时,它将p设置为0并跳过。当p为0时,打印被抑制

gawk '/<Lexer>/{p=1; next} /<\/Lexer>/ {p=0} p==1 {print}' file