Problema nº 1: grepping "Folhetos: Video Center" ... não vejo o resultado :
No despejo hexadecimal do arquivo, observe os dois bytes C2A0 entre as palavras Panfletos: e Vídeo . Esta é uma codificação UTF8 para Espaço sem quebra . o grepping NBSP é conhecido por falhar Para mais informações, leia Como remover especial 'M-BM - 'personagem com sed e usa sed para substituir ... Hex c2a0 . Resposta curta é:
sed -i.bak -e 's/\xc2\xa0/ /' /path/to/file
O problema nº 2 'America’s' é exibido como 'Americaâs' (??) :
Aqui, o dump contém três bytes e28099, conhecidos como MARCA DE COTAÇÃO ÚNICA CERTA ('). Na verdade, não deve haver problema aqui! Você provavelmente se distraiu com o problema acima (você poderia confirmar?)
Se você usa grep
, sed
e outras ferramentas com expressão que respeita sua localidade (UTF8!), então funcionará:
printf 'America\xe2\x80\x99s\n' | grep --only-matching "[[:punct:]]"
printf 'America\xe2\x80\x99s\n' | sed -e "s/[[:punct:]]/?/"
Se você quiser se livrar de todos os caracteres " especiais " do UTF-8, use pode usar as dicas acima ou iconv
(mas atualmente, há poucas desculpas para não suportar o UTF8) .
Solte todos os caracteres não-ascii:
type a.txt | iconv -f utf8 -t ASCII//TRANSLIT
Ou para preservar caracteres de um local:
type a.txt | iconv -f utf8 -t iso8859-15//TRANSLIT | iconv -f iso8859-15 -t utf8