
Eu gostaria de remover um padrão de string assim
You should not remove this /*This is the part should remove*/ You
should not remove this
Eu gostaria de remover todo o texto dentro do /*
e */
.
Responder1
No interesse de ensinar um homem a pescar versus dar um peixe a um homem, estou vinculando você a um tutorial sobre expressões regulares. expressões regulares.info/quickstart.html
Caso precise de uma solução rápida, eis o que você faria: Abra o arquivo no vim e digite o seguinte:
:s/\/\*.*?\*\/ /g
Isso deve substituir todas as suas strings começando com /* e terminando */ por um espaço. Vinculei você ao tutorial de regex primeiro, caso eu destruísse a expressão que escrevi. Leia o tutorial e escreva seu próprio comando ou faça um backup antes de usar a linha acima.
Responder2
Experimente a seguinte linha sed rápida e suja:
sed -e 's@/\*.*\*/@@' file
Isso mostrará a saída, mas na verdade não modificará o arquivo, depois de executá-lo e confirmar que ele faz as alterações desejadas, coloque-o -i
antes de -e
para instruí-lo a alterar o arquivo no lugar.
O que ele realmente faz é pegar tudo entre /*
e */
e substituí-lo por nada (essencialmente excluindo-o), mas também obterá a parte /*
e .*/
Apresento primeiro o método de não modificação, caso eu tenha destruído minha expressão regular (trabalhando sem memória e sem acesso ao sed na máquina atual para testar rapidamente). Esteja ciente também de que isso não funcionará se o texto a ser removido tiver linhas cruzadas, pois sed funciona em cada linha individualmente. Se você precisar de um programa para trabalhar em várias linhas de texto ao mesmo tempo, precisará do awk ou possivelmente do perl (nenhum dos quais eu conheço o suficiente para oferecer sugestões de código).