(由于我无法粘贴我看到的字符,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
它不起作用。
cat
和sed
完美地将其视为 - ,所以我尝试了
sed 's/–/–/g' thisfile > correctedfile
但它也没有用。
然后我尝试了recode iso885915..utf8 thisfile
,反之亦然。
如果我在kate
中进行常规查找和替换,则会修复它。但是,由于问题存在于我希望在命令行中使用for; do; done
循环解决的其他文件中,但为此我需要知道如何修复其中一个。
为什么这些解决方案不起作用,我缺少什么以及如何使其起作用?
答案 0 :(得分:3)
我认为您正在寻找的sed命令是:
sed 's/\xE2\x80\x94/-/g' thisfile
\ xE2 \ x80 \ x94是十六进制的,我假设是有问题的字符序列。 (仅供参考,它是2014年角色的UTF-8代码,有点长篇大论)。这比尝试将特殊字符直接输入sed命令更好。
如果这不起作用,请使用hexdump确切地找出有问题的字节是什么。
hexdump -C thisfile