【发布时间】:2011-03-27 01:50:55
【问题描述】:
在最近的question 中指出,在 OSX 上,在非 ascii 文件上运行 sed 会产生奇怪的结果。例如,如果你这样做(/usr/bin/cal 是一个随机二进制文件)
sed 's/[^A-Z]//' /usr/bin/cal
sed 将删除除 A-Z 之外的所有可打印字符,但仍保留许多不可打印字符。但是,如果你这样做了
LANG='' sed 's/[^A-Z]//' /usr/bin/cal
仅输出 A-Z(和换行符)。为什么?
通常LANG=en-US.UTF-8这是怎么回事?无论如何,我看不到 sed 的输出在 UTF-8 中可以被认为是正确的。是坏了,还是有一些我不理解的工作概念?
我知道 OSX sed 符合 POSIX,因此与心爱的 GNU sed 不同。
【问题讨论】: