sed 一次多个替换规则

sed 一次多个替换规则

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

相关内容