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.
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
%
em outro lugar no código, não indicando comentário, etc. em sprintf('Masi % score')
. sprintf('Masi % score'); % do not need to remove this comment because tricky
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, ...
Encontrei uma resposta . Defina a cor dos comentários da mesma forma que o plano de fundo.
Tags python text-processing perl sed matlab