ex regex não funciona para caracteres ocultos

0

Eu tenho uma lista que, por algum motivo, tem alguns caracteres não alfanuméricos anexados ao final.

Eu teria pensado que seria um caso simples de execução:

sed 's/[^A-Za-z0-9]$//'

Para substituir esses caracteres finais. Infelizmente o acima parece estar tendo efeito zero.

Por exemplo, se eu fizer o despejo do arquivo, veremos linhas como:

63 6f 6d be 0a 

Obviamente, o culpado aqui é o caractere hexadecimal

be

Mas executando o seguinte pipe

.... | sed 's/[^A-Za-z0-9]//' | hexdump -C

Ainda vejo "ser" aparecendo!

    
por Little Code 09.02.2015 / 16:29

1 resposta

1

Você pode filtrar os caracteres que não deseja com tr ; no seu caso

... | tr -d -c '[:print:][:cntrl:]'

-d exclui qualquer caractere que corresponda aos caracteres especificados, -c complementa os conjuntos de caracteres (portanto, ele mantém apenas o que corresponde nesse caso), [:print:] corresponde a todos os caracteres imprimíveis, incluindo espaço e [:cntrl:] (como retorno de carro e nova linha, que você provavelmente deseja manter).

    
por 09.02.2015 / 16:36