ソースコードを分析して、それぞれ異なる関数やサブルーチンをファイルに出力しようとします。私の質問は、ソースコードが次のようになる可能性があることです。
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
1つの代わりに2つの条件を使用することもできます。
... /^[^#]*subroutine/ && $0 !~ /write subroutine/ ...