2011-11-26 5 views
1
gawk '/<Lexer>/,/<\/Lexer>/' file 

이 작동하지만 생략하고 싶은 첫 번째 및 마지막 레코드를 인쇄합니다. 그렇게하는 방법?범위 패턴을 켜거나 끄는 레코드를 건너 뛰는 방법은 무엇입니까?

"범위 패턴을 켜는 레코드와 해제하는 레코드 모두 범위 패턴과 일치합니다. 이러한 레코드를 조작하고 싶지 않으면 if 액션을 규칙의 액션에 쓸 수 있습니다 관심있는 기록과 구별 할 수 있습니다. " 그러나 예는 없습니다. gawk '/<Lexer>/,/<\/Lexer>/' {1,FNR-1} file 과 같은 것을 시도했지만 작동하지 않습니다. awk를 사용하지 않고 이것을 수행하는 더 좋은 방법이 있다면 그렇게 말하십시오.

답변

0

당신은 2 개의 별도 일치 문과 변수

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

<Lexer> 일치하고 1로 페이지를 설정하고 다음 행으로 건너와 그것을 할 수 있습니다. p가 1이면 현재 행을 인쇄합니다. </Lexer>과 일치하면 p를 0으로 설정하고 건너 뜁니다. p가 0이므로 인쇄가 억제됩니다.

관련 문제