Matlab 코드에서 대부분의 주석을 안정적으로 제거하는 방법은 무엇입니까?

Matlab 코드에서 대부분의 주석을 안정적으로 제거하는 방법은 무엇입니까?

\n기존 확장/가젯/...을 통하는 대신 Unix 명령(줄 바꿈 제거) 및 기본 Matlab 코드를 통해 줄 바꿈 없이 주석을 안정적으로 제거하고 싶습니다.여기. 테스트 케이스

  1. %sprintf('Masi % score')표현 등 의 주석이 아닌 코드의 다른 곳에 있는 기호
  2. 어려운 질문 등은 무시하세요.sprintf('Masi % score'); % do not need to remove this comment because tricky
  3. ...

나는 SED가 매우 잘 작동할 수 있다고 생각한다. 몇 가지 시도

  • 줄 바꿈이 제거되어 테스트 사례 1이 실패하기 때문에 시도 1 오류

    # http://stackoverflow.com/a/3350246/54964
    sed -e 's/%.*$//' -e '/^$/d' inputFile.m
    
    ## Output 
    function blalala(var2);
    var=1;      
    hello=2; 
    assert(indexPositionEnd >= indexPositionStart, 'indexEnd bigger/equal than indexStart');
    index=index+1
    pause(1); 
    sprintf('Masi 
    end
    
  • 첫 번째 줄만 출력에 포함되기 때문에 시도 2 ​​오류가 발생했습니다.

    # http://stackoverflow.com/a/1252191/54964
    sed ':a;N;$!ba;s/%.*$/ /g' inputFile.m
    
    ## Output  
    function blalala(var2);
    

inputFile.m데이터 파일 예

function blalala(var2);
%% synapse
% describe here pla la
%
var=1;      
% 
hello=2; 

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%                      Statistics and Monitoring
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

assert(indexPositionEnd >= indexPositionStart, 'indexEnd bigger/equal than indexStart');

index=index+1

%% Situation monitoring at the end
pause(1); % waitforbuttonpress pause is not sufficient

% http://stackoverflow.com/a/111322....

sprintf('Masi % score').
sprintf('Masi % score'); % do not need to remove this comment because tricky

end

운영 체제: Debian 8.5 64비트
도구: SED, Python, Perl...

답변1

이 시도:

sed 's/[[:blank:]]*%[^'\'']*$//' 

주석 텍스트에 작은따옴표가 포함되어 있지 않은 경우에만 줄 끝 주석이 제거됩니다. 해당 줄에 개행 문자가 남습니다.

답변2

내가 하나 찾았어답변. 주석의 색상을 배경과 동일하게 설정합니다.

관련 정보