windows-1252
我想通过转换为windows-1251
我想要进行如下所示的映射来修复文件中的损坏字符:
sed 's/[ÉÖÓÊÅÍÃØÙÇÕÚÔÛÂÀÏÐÎËÄÆÝß×ÑÌÈÒÜÁÞ¸éöóêåíãøùçõúôûâàïðîëäæýÿ÷ñìèòüáþ]/[ЁЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМИТЬБёйцукенгшщзхъфывапролджэячсмитьбю]/g' input.py > input.py
我可以逐个替换字符,例如:
sed 's/î/о/g' input.py > output1.py
sed 's/è/и/g' output1.py > input.py
但是,在一次运行中修复所有字符的字符映射语法是什么?
答案1
这就是tr
目的。假设这些确实是您想要更改的字符并且这不是编码问题,那么您需要的是:
tr '¨ÉÖÓÊÅÍÃØÙÇÕÚÔÛÂÀÏÐÎËÄÆÝß×ÑÌÈÒÜÁÞ¸éöóêåíãøùçõúôûâàïðîëäæýÿ÷ñìèòüáþ' \
'ЁЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМИТЬБЮёйцукенгшщзхъфывапролджэячсмитьбю' < input.py > output.py
但是,我怀疑您想要做的是更改文件的编码,而不是字符。如果没有示例文件,我无法对此进行测试,但也许是这样的:
iconv -f windows-1252 -t windows-1251 input.py > output.py