一次 sed 多个替换规则

Ste*_*pan 3 sed text-processing

我想通过转换windows-1252windows-1251 我想做的映射来修复文件中的损坏字符,如下所示:
sed 's/[ÉÖÓÊÅÍÃØÙÇÕÚÔÛÂÀÏÐÎËÄÆÝß×ÑÌÈÒÜÁÞ¸éöóêåíãøùçõúôûâàïðîëäæýÿ÷ñìèòüáþ]/[?????????????????????????????????????????????????????????????????]/g' input.py > input.py

我可以一一替换字符,例如:

sed 's/î/?/g'  input.py > output1.py
sed 's/è/?/g'  output1.py > input.py
Run Code Online (Sandbox Code Playgroud)

但是在一次运行中修复所有字符的字符映射语法是什么?

ter*_*don 5

tr就是为了。假设这些确实是您想要更改的字符并且这不是编码问题,您需要的是:

tr '¨ÉÖÓÊÅÍÃØÙÇÕÚÔÛÂÀÏÐÎËÄÆÝß×ÑÌÈÒÜÁÞ¸éöóêåíãøùçõúôûâàïðîëäæýÿ÷ñìèòüáþ' \
   '??????????????????????????????????????????????????????????????????' < input.py > output.py
Run Code Online (Sandbox Code Playgroud)

但是,我怀疑您想要做的是更改文件的编码,而不是字符。如果没有示例文件,我无法对此进行测试,但也许是这样的:

 iconv -f windows-1252 -t windows-1251 input.py > output.py
Run Code Online (Sandbox Code Playgroud)