做一些流编辑来改变讨厌的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
复制相似问题