Como faço para remover caracteres especiais de um arquivo?

0

Eu tenho um arquivo que contém:

<class>
these are special @ $ characters / < > & " '
</class>

Desejo remover apenas todos os caracteres especiais, entre <class> </class> .

Eu tentei este comando.

sed  "s/[^a-zA-Z0-9(<.class>)(<\/class>)/ /g" file.txt

No comando acima, tentei manter os alfabetos, numeral, tags e tudo o mais deve ser removido.

Mas não está me dando a saída que eu quero.

    
por basha 28.01.2018 / 14:54

2 respostas

0

Feito abaixo do comando sed testado e funcionando bem Usando o comando abaixo eu removi todos os caracteres especiais [<>&$@/'"] entre <class> and </class>

input.txt

<class>
these are special @ $ characters / < > & " '
</class>

comando

sed -n '/<class>/,/<\/class>/p' input.txt | sed '/^[a-z]/s/[<>&$@/]//g' | sed "s/'//g" | sed 's/"//g'

saída

<class>
these are special   characters
</class>
    
por 28.01.2018 / 16:04
0

Supondo que haja apenas um bloco de class e cada tag esteja em uma linha separada, isso funcionará para você no GNU awk:

awk '/<\/class>/{p=0};p{gsub(/[^A-Za-z0-9]/," ")};/<class>/{p=1};1' file.txt
    
por 28.01.2018 / 16:16