做一些流编辑来改变令人讨厌的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
Run Code Online (Sandbox Code Playgroud)
它回来了 sed: RE error: illegal byte sequence
有谁能解释这意味着什么?命令的哪个部分是问题?
ldr*_*drg 149
尝试设置LANG环境变量(LANG=C sed ...)或使用这里提到的二进制sed工具之一:binary sed replacement
为什么错误?
没有LANG=Csed假定文件是以指定的任何编码进行编码的,LANG文件(二进制)可能包含在LANG编码中不是有效字符的字节(因此你可能得到'非法字节序列').
为什么LANG=C工作?
C恰好将所有ASCII字符视为自身,非ASCII字符视为文字.
小智 70
LANG=C单独没有为我做的伎俩,但添加LC_CTYPE=C也解决了它.
小智 22
除了LANG=C和之外LC_CTYPE=C,我还需要做到LC_ALL=C这一点.
LC_ALL覆盖所有单个LC_*类别.因此,最强大的方法是使用LC_ALL=C sed ...- 不需要也处理其他变量.
Ada*_*ite 18
我设法通过运行:
unset LANG
Run Code Online (Sandbox Code Playgroud)
在sed命令之前.
不知道我做了什么或为什么它有效,但确实如此.