Remove string que possui caracteres especiais

0

Eu tenho um arquivo chamado test semelhante ao seguinte:

hello
my
name
<h6>test morning</h6>
is
bob

Eu sei que usaria:

sed -i -- 's/name//g' test

Para remover name do arquivo, mas como eu removo <h6>test morning</h6> ?

A string pode estar em qualquer lugar do arquivo e o arquivo pode ser qualquer coisa como um arquivo .css ou .html .

    
por Proletariat 08.07.2016 / 16:14

2 respostas

4

Para esses casos, você pode usar qualquer caractere em vez de / . Por exemplo

sed -i 's|<h6>test morning</h6>||g' test

Para padrões de sequência de caracteres, você deve escapar primeiro

sed -i '\|<h6>test morning</h6>|s///g' test

Se você tem poucos / no padrão pode ser fácil de escapar diretamente

sed -i '/<h6>test morning<\/h6>/s///g' test
    
por 08.07.2016 / 16:23
0

Perl para o resgate!

Em Perl, você pode usar uma variável na parte padrão, e você pode usar quotemeta (ou o escape \Q correspondente) para escapar de caracteres especiais:

REPLACE='<h6>test morning</h6>' perl -pe 's/\Q$ENV{REPLACE}//'
    
por 08.07.2016 / 16:22