在 MAC 中使用 sed 命令时遇到问题

时间:2021-01-13 13:00:50

标签: bash macos shell

我正在尝试执行以下操作:

LC_CTYPE=C sed 's/|/¦/g' t.txt > new_t.txt

代码正在运行,但是当我打开新文件时,替换添加了一个附加字符“A|”。这是为什么?

1 个答案:

答案 0 :(得分:0)

输入时

LC_CTYPE=C sed 's/|/¦/g' t.txt > new_t.txt

您的外壳可能被配置为接受命令本身作为 UTF-8,因此实际上您最终转换了单字节 0x7C (U+007C ) 到两个字节 0xC2 0xA6,这是 U+00A6 的正确 UTF-8 编码。

当时做了什么不清楚,但不知何故,您最终以某种不同于 UTF-8 的编码检查了文件,这将两个字节公开为您报告看到的字符串。

正确的解决方法是在支持 UTF-8 的正确配置程序中检查文件。