2017-10-10 12 views
0

私はユニコードタイプと思われるファイルを持っており、sedまたは他のunixユーティリティでそれらを削除したいと考えています。私はいくつかのオプションを試してきましたが、何らかの理由でそれらの文字を削除できませんでした。今ユニコード文字をsedまたはvimに置き換えることができません

> 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....| 

無置換の上方に "C2 A0" 置き換える

> 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 

試み2起こっ:テストケースは、(ヘッド-N1)

試みを一行で1に示す使用しますvim

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

sedを再度使用し、置換が行われませんでした。どのようにそれらの文字(16進数 "c2a0")を置換または削除するのですか?

答えて

0

最後に、ユニコード文字を正常に削除したPerlを使用しました。

> 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 
関連する問題