Как пропустить записи, которые включают / выключают шаблон диапазона? - PullRequest
1 голос
/ 26 ноября 2011
gawk '/<Lexer>/,/<\/Lexer>/' file

это работает, но печатает первую и последнюю записи, которые я хотел бы пропустить.Как это сделать?

Там написано: «Запись, которая включает шаблон диапазона, и та, которая выключает его, оба соответствуют шаблону диапазона. Если вы не хотите работать с этими записями, вы можетенапишите заявления if в действии правила, чтобы отличить их от записей, которые вас интересуют. "но нет примера.Я пробовал что-то вроде gawk '/<Lexer>/,/<\/Lexer>/' {1,FNR-1} file, но это не работает.Если у вас есть лучший способ сделать это, без использования awk, скажите так.

1 Ответ

0 голосов
/ 26 ноября 2011

Вы можете сделать это с помощью 2 отдельных операторов сопоставления и переменной

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

Это соответствует <Lexer> и устанавливает p в 1, а затем переходит к следующей строке.Пока p равно 1, она печатает текущую строку.Когда он соответствует </Lexer>, он устанавливает p в 0 и пропускает.Поскольку p равно 0, печать подавляется.

...