Como posso apagar de um arquivo de texto esses caracteres especiais?

2

Eu tenho um arquivo com caracteres especiais que foram criados durante a cópia do terminal.

Agora eu gostaria de removê-los. Eu tentei grep e sed, mas não funcionou, talvez eu esteja fazendo errado.

Caractere especial é um ESC dentro de uma caixa preta, não pode copiá-lo, mas se eu fizer isso, ele se transforma em uma caixa com números dentro:

números dentro dessa caixa são:

00

1B

    
por Insanebench420 22.12.2016 / 15:04

3 respostas

2

O Python pode fazer o trabalho. O processo aqui é simples, lemos todas as linhas na lista e, simultaneamente, substituímos o caractere de escape UTF (que é \u001b ) e depois imprimimos linhas novamente, mas sem o caractere de escape. O < input.txt envia o texto antigo para o comando python e > new_file.txt envia o texto para o novo arquivo.

Script:

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import sys
lines=[l.strip().replace(u"\u001b","") for l in sys.stdin]
print("\n".join(lines))

Salve como delete_escape.py , torne-o executável com chmod +x ./delete_escape.py e chame da seguinte forma:

./delete_escape.py < input.txt > output.txt

Resultados:

    
por Sergiy Kolodyazhnyy 22.12.2016 / 15:16
2

Você pode fazer isso em sed , mas você precisa usar o escape ANSI no bash para dar o personagem:

sed -i 's/'$'\u001b''//g' file

E aqui está em ação:

Como alternativa, em perl:

perl -i -pe 's/'$'\u001b''//g' file

E com tr :

tr -d $'\u001b' < file > newfile 
    
por terdon 22.12.2016 / 15:24
0

Se bem entendi, parece que você quer remover as sequências de escape ansi presentes no seu texto. Experimente

ansifilter file

Atualizar

Para minha surpresa, não há pacote ansifilter para o Ubuntu! (existe para fedora, arch, brew, etc)

No entanto, podemos instalar a partir de TGZ ou de outros pacotes, ou wget o rpm, aplique alien para construir um pacote deb e instalá-lo.

    
por JJoao 07.11.2017 / 09:30