我正在尝试执行以下操作:
LC_CTYPE=C sed 's/|/¦/g' t.txt > new_t.txt
代码正在工作,但当我打开新文件时,替换会添加一个额外的字符";A";。为什么?
当您键入时
LC_CTYPE=C sed 's/|/¦/g' t.txt > new_t.txt
您的shell可能被配置为接受命令本身为UTF-8,因此实际上您最终将单字节0x7C(U+007C(转换为两字节0xC2 0xA6,这是U+00A6的正确UTF-8编码。
然后做了什么还不清楚,但不知何故,您最终检查了UTF-8以外的其他编码的文件,UTF-8将这两个字节公开为您报告看到的字符串。
正确的解决方法是在正确配置的支持UTF-8的程序中检查文件。