Como remover caracteres Z de controle de um arquivo?

0

O arquivo possui caracteres Z (^ Z) de controle. Eu tentei sed 's/^Z//g' file_name mas não está funcionando. Até tentou script perl mas não removê-los. Por favor, deixe-me saber se há maneira de remover este personagem.

    
por user7952074 04.07.2018 / 10:01

3 respostas

3

O caractere de controle produzido por Ctrl + Z é 2 em octal. Isso pode ser excluído por tr :

tr -d '2' <file >newfile

Isso exclui os caracteres em qualquer parte do arquivo e cria um novo arquivo chamado newfile com o conteúdo modificado.

Seu comando sed não funciona, pois a expressão ^Z corresponderia a um caractere Z no início da linha. O ^ ancora o restante da expressão no início da linha.

    
por 04.07.2018 / 10:07
0

Você pode combinar Ctrl + Z usando \d mais o código decimal do caractere (neste caso 26).

sed 's/\d26//g' < file > newfile

Uma alternativa "posix" (no bash) poderia ser algo como:

sed $( echo 's/@//g' | tr '@' '2' ) < file > newfile

O tr substituirá '@' no regex pelo carachter Ctrl + Z (cujo código é 32 em octal).

    
por 04.07.2018 / 10:41
-1
$ sed 's/\^Z//g' filename

NOTA: Caracteres especiais devem ser escapados com '\'.

    
por 06.07.2018 / 05:40