首页 > 解决方案 > 在 MAC 中使用 sed 命令时遇到问题

问题描述

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

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

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

标签: bashmacosshell

解决方案


当你输入

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 的正确配置程序中检查文件。


推荐阅读