두 가지 가능한 패턴으로 시작하는 줄을 무시합니다.

두 가지 가능한 패턴으로 시작하는 줄을 무시합니다.

소스코드를 분석해서 각각 다른 함수나 서브루틴을 파일로 출력하려고 합니다. 내 질문은 소스 코드가 다음과 같을 수 있다는 것입니다.

SUBROUTINE ABC
---
END SUBROUTINE
---
#SUBROUTINE to compute...
SUBROUTINE Dummy
---
      WRITE SUBROUTINE XX has finished...
END SUBROUTINE

따라서 다음 명령을 사용하면 주석 줄을 피할 수 있습니다.

awk 'BEGIN{IGNORECASE=1};/^[^#]*subroutine/{flag=1;s="tmp_s_"++i}/end subroutine/{flag=0} flag {print $0 > s}' $sourcecodefile

하지만 "서브루틴"이라는 단어 앞에 "WRITE"가 있는 줄도 피하고 싶습니다. 이 명령을 시도했지만 제대로 작동하지 않습니다.

awk 'BEGIN{IGNORECASE=1};/[^#|WRITE]*subroutine/{flag=1;s="tmp_s_"++i}/end subroutine/{flag=0} flag {print $0 > s}' $sourcecodefile

답변1

하나 대신 두 가지 조건을 사용할 수도 있습니다.

... /^[^#]*subroutine/ && $0 !~ /write subroutine/ ...

관련 정보