SED抓住特殊人物

时间:2014-11-27 16:43:58

标签: regex sed character-encoding

我正在尝试修复存​​档的html页面中的编码错误。我的问题是sed表现得很奇怪,因为它没有捕获数据中的特殊字符。我尝试使用和不使用-r开关。

我的数据如下: Budapesti ??p?­t?©szeti Filmnapok k??l??nkiad??s

sed命令:

sed -i.bak 's|Budapesti.*|REPLACE|g' index.html

我得到的结果没有重新编码:

REPLACE�t?�szeti Filmnapok k??l??nkiad??s

我期待的结果是:

REPLACE

似乎与某种方式的编码有关。如果我先recode iso-8859-2 index.html,那么sed工作正常,可以得到预期的输出。

以下是重新编码之前i ??p?­t?Šs部分的十六进制字节:

69 20 3F 3F 70 3F AD 74 3F A9 73

并重新编码后:

69 20 3F 3F 70 3F C2 AD 74 3F C5 A0 73

BTW,这是我没有重新编码的结果:

REPLACE­t?Šs 52 45 50 4C 41 43 45 AD 74 3F A9 73

我使用的是最新的gsed(GNU sed)4.2.2。

1 个答案:

答案 0 :(得分:1)

LANG=C.ISO-8859-2 sed -i.bak 's|Budapesti.*|REPLACE|g' index.html

Cygwin terminal not displaying certain characters?