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

时间:2011-11-26 16:56:21

标签: gawk

gawk '/<Lexer>/,/<\/Lexer>/' file

这可行,但它会打印第一个和最后一个记录,我想省略它们。怎么做?

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

1 个答案:

答案 0 :(得分:0)

您可以使用2个单独的匹配语句和变量

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

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