2017-10-10 2 views
0

J'ai un fichier avec ce que je crois être un type Unicode et je voudrais les supprimer avec sed ou un autre utilitaire Unix. J'ai essayé quelques options et, pour une raison quelconque, incapable de supprimer ces caractères. Les cas de test représentés avec une seule ligne (tête -n1)Impossible de remplacer les caractères Unicode par sed ou vim

Tentative 1:

> head -n1 file1.txt | hexdump -C # Hexdump line 1 
output: 
00000000 47 72 6f 75 70 c2 a0 20 20 20 53 69 67 6e 61 6c |Group.. Signal| 
00000010 c2 a0 6e 61 6d 65 c2 a0 20 20 20 20 20 20 20 20 |..name..  | 
00000020 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 |    | 
00000030 55 6e 69 74 c2 a0 20 74 79 70 65 c2 a0 44 65 73 |Unit.. type..Des| 
00000040 63 72 69 70 74 69 6f 6e c2 a0 0d 0a    |cription....| 
0000004c 

remplacer maintenant "c2 a0" au-dessus

> head -n1 file1.txt | sed 's/\xc2\xa0//g' | hexdump -C 
or 
> head -n1 file1.txt | sed 's/\x{c2a0}//g | hexdump -C 
00000000 47 72 6f 75 70 c2 a0 20 20 20 53 69 67 6e 61 6c |Group.. Signal| 
00000010 c2 a0 6e 61 6d 65 c2 a0 20 20 20 20 20 20 20 20 |..name..  | 
00000020 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 |    | 
00000030 55 6e 69 74 c2 a0 20 74 79 70 65 c2 a0 44 65 73 |Unit.. type..Des| 
00000040 63 72 69 70 74 69 6f 6e c2 a0 0d 0a    |cription....| 

Aucun remplacement happend

Tentative 2: Utilisation vim

vim file1.txt 
:set nobomb 
:set fileencoding=utf-8 
:wq 

Utilisé sed encore et aucun remplacement n'est arrivé. Comment remplacer ou supprimer ces caractères (hex "c2a0")?

Répondre

0

J'ai finalement fini par utiliser Perl qui a réussi à supprimer les caractères Unicode.

> perl -v 
This is perl 5, version 18, subversion 2 (v5.18.2) built for darwin-thread-multi-2level 

> perl -pi -e 's/\x{c2}\x{a0}//g' file1.txt 
> head -n1 file1.txt | hexdump -C 
00000000 47 72 6f 75 70 20 20 20 53 69 67 6e 61 6c 6e 61 |Group Signalna| 
00000010 6d 65 20 20 20 20 20 20 20 20 20 20 20 20 20 20 |me    | 
00000020 20 20 20 20 20 20 20 20 20 20 55 6e 69 74 20 74 |   Unit t| 
00000030 79 70 65 44 65 73 63 72 69 70 74 69 6f 6e 0d 0a |ypeDescription..| 
00000040