Como remover o padrão de string usando o terminal do Linux?

Como remover o padrão de string usando o terminal do Linux?

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 -iantes de -epara 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).

informação relacionada