用sed难以替代的人物

时间:2012-11-01 09:07:20

标签: bash encoding sed

(由于我无法粘贴我看到的字符,BB将表示一个字符,其中的数字为0080,后面是一个数字为0094的正方形。)

我在这个字幕文件中使用的ISO-8859-15编码在文本编辑器中显示âBB而不是

如果我使用cat阅读文件,则短划线会正常显示,但如果我按原样使用该文件,则会在视频字幕上显示—

我尝试用sed进行替换,但没有成功:

sed 's/âBB/–/g' thisfile > correctedfile
sed 's/—/–/g' thisfile > correctedfile

我首先在命令行中尝试了它,并且编号的框无法显示,然后我用脚本尝试了它。

我甚至尝试过用

作弊
sed 's/â../–/g' thisfile > correctedfile

它不起作用。

catsed完美地将其视为 - ,所以我尝试了

sed 's/–/–/g' thisfile > correctedfile

但它也没有用。

然后我尝试了recode iso885915..utf8 thisfile,反之亦然。

如果我在kate中进行常规查找和替换,则会修复它。但是,由于问题存在于我希望在命令行中使用for; do; done循环解决的其他文件中,但为此我需要知道如何修复其中一个。

为什么这些解决方案不起作用,我缺少什么以及如何使其起作用?

1 个答案:

答案 0 :(得分:3)

我认为您正在寻找的sed命令是:

sed 's/\xE2\x80\x94/-/g' thisfile

\ xE2 \ x80 \ x94是十六进制的,我假设是有问题的字符序列。 (仅供参考,它是2014年角色的UTF-8代码,有点长篇大论)。这比尝试将特殊字符直接输入sed命令更好。

如果这不起作用,请使用hexdump确切地找出有问题的字节是什么。

hexdump -C thisfile