做一些流编辑来改变讨厌的Parallels图标。它开发得很差,嵌入到应用程序本身中,而不是一个图像文件。所以我找到了这个sed命令,它有一些很好的反馈:
sudo sed -i.bak s/Parallels_Desktop_Overlay_128/Parallels_Desktop_Overlay_000/g /Applications/Parallels\ Desktop.app/Contents/MacOS/prl_client_app它返回sed: RE error: illegal byte sequence
有人能解释一下这是什么意思吗?命令的哪一部分是问题所在?
发布于 2012-07-02 11:59:43
尝试设置LANG环境变量(LANG=C sed ...)或使用此处提到的二进制sed工具之一:binary sed replacement
为什么会出错?
如果没有LANG=C,sed假设文件是以LANG中指定的任何编码进行编码的,并且文件(二进制)可能包含字节,这些字节在LANG的编码中不是有效字符(因此,您可能会得到“非法字节序列”)。
LANG=C 为什么有效?
C恰好将所有ASCII字符视为自身,而将非ASCII字符视为文字。
发布于 2013-03-18 10:07:26
单独使用LANG=C并不能解决这个问题,但是添加LC_CTYPE=C也能解决这个问题。
发布于 2014-05-08 00:48:41
除了LANG=C和LC_CTYPE=C之外,我还必须使用LC_ALL=C才能使其正常工作。
LC_ALL将覆盖所有单独的LC_*类别。因此,最健壮的方法是使用LC_ALL=C sed ... -不需要同时处理其他变量。
https://stackoverflow.com/questions/11287564
复制相似问题