Como remover o padrão de strings usando o terminal do linux?

1

Eu gostaria de remover um padrão de string que como este

You should not remove this /*This is the part should remove*/ You
should not remove this

Eu gostaria de remover todo o texto dentro de /* e */ .

    
por user28167 27.07.2011 / 02:06

2 respostas

2

No interesse de ensinar-a-homem-para-peixe vs. dar-um-homem-um-peixe, estou ligando você a um tutorial sobre expressões regulares. regular-expressions.info/quickstart.html

Caso você precise de uma solução rápida, veja o que você faria: Abra o arquivo no vim e digite o seguinte:

:s/\/\*.*?\*\/ /g

Isso deve substituir todas as suas strings começando / * e terminando * / com um espaço. Eu o vinculei ao tutorial de regex primeiro, no caso de ter massacrado 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.

    
por 27.07.2011 / 02:22
0

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 -i antes do -e informar que ele altere o arquivo arquivo no lugar.

O que ele realmente leva tudo entre /* e */ e o substitui por nada (essencialmente excluindo-o), ele também obterá a porção /* e */ também.

Eu dou a você o método de não modificação primeiro, apenas no caso de eu ter massacrado minha expressão regular (trabalhando sem memória, e sem acesso a sed na máquina atual para testar rapidamente). Também esteja ciente de que isso não funcionará se o texto remover linhas cruzadas, pois o sed funciona em cada linha individualmente. Se você precisa de um programa para trabalhar em várias linhas de texto de uma só vez, você precisará do awk ou possivelmente perl (nenhum dos quais eu sei o suficiente para oferecer sugestões de código).

    
por 27.07.2011 / 02:20