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