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