Como remover com segurança a maioria dos comentários no código do Matlab?

0

Eu quero remover os comentários de forma confiável sem remover novas linhas ( \n ) e qualquer parte do código essencial do Matlab por comandos do Unix, não por extensões / gadgets / ... existentes para o destino, etc. here . Casos de teste

  1. O símbolo % em outro lugar no código, não indicando comentário, etc. em sprintf('Masi % score') .
  2. Ignore os complicados, etc. sprintf('Masi % score'); % do not need to remove this comment because tricky
  3. ...

Acho que o SED pode funcionar bem. Algumas tentativas

  • Tentativa 1 com falha porque remove as novas linhas e falha no caso de teste 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
    
  • Tentativa 2 porque inclui apenas a primeira linha na saída

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

Exemplo inputFile.m como arquivo de dados

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

OS: Debian 8.5 64 bit
Ferramentas: SED, Python, Perl, ...

    
por Léo Léopold Hertz 준영 05.10.2016 / 13:44

2 respostas

1

Tente isto:

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

Isso remove os comentários de término de linha, somente se o texto do comentário não contiver uma aspa simples. Deixa a nova linha da linha.

    
por 05.10.2016 / 14:25
0

Encontrei uma resposta . Defina a cor dos comentários da mesma forma que o plano de fundo.

    
por 05.10.2016 / 14:31