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

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

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

4

1 回答 1

0

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

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

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

于 2011-11-26T18:34:01.110 回答