テキストファイルがあり、「間違った」文字を整理したいと思います。 vimで開く場合(「:set number」を使用):
57000044 zo¥<9a>¥ge¥o¥graph¥i¥cal¥ly
39999999 pariá¹<83>Å<9b>a
たとえば、「<9a>」、「<83>」、「<9b>」はvimで青色で表示され、これら2行はvimの外側で次のようになります。
$ sed '57000044,57000044!d' toclean.txt
zo���ge�o�graph�i�cal�ly
$ sed '57000044,57000044!d' toclean.txt | cat -vte -
zoM-%M-^ZM-%geM-%oM-%graphM-%iM-%calM-%ly$
$
そして
$ sed '39999999,39999999!d' toclean.txt
pariṃśa
$ sed '39999999,39999999!d' toclean.txt | cat -vte -
pariM-aM-9M-^CM-EM-^[a$
$
質問:上記の「<9a>」、「<83>」、および「<9b>」の16進ASCII文字が何であるかをどうやって知ることができますか?または「1」または「¥」...
ファイルをすべて削除してよりきれいにするには、16進コードが必要です。たとえば、このコードは16進ASCII "x09"を削除するため、「水平タブ」になります。
sed -i 's/[\x09]//g' toclean.txt
16進数で「9A」または「A5」を試してみましたが、役に立ちませんでした。
$ sed '57000044,57000044!d' toclean.txt | sed 's/[\x9A]//g; s/[\xA5]//g'
zo���ge�o�graph�i�cal�ly
zo���ge�o�graph�i�cal�ly
$
ベストアンサー1
hex:<9a>およびhex:<83>コードはASCIIコードではありません(ASCIIコードは<00>から<7F>までのみ可能です)。また、どの文字(ASCIIより大きい文字セットから)がこれらのコードに関連付けられているかを「見つける」ことはできません。これは、デフォルトの文字セット(「コードページ」)エンコーディングによって異なります。したがって、データを作成した人にどの文字エンコーディングを使用したかを尋ねる必要があります。 (しばしば見つけることができる一般的なエンコーディングは、ISO 8859-1、ISO 8859-15、UTF-8、UCS-2です。あります。)
削除したいコード値がわかったら(オプション)オプション(8進引数)tr
でコマンドを使用できます。-d