首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >获取"sed错误-非法字节序列“(在bash中)

获取"sed错误-非法字节序列“(在bash中)
EN

Stack Overflow用户
提问于 2012-07-02 11:44:59
回答 4查看 64.6K关注 0票数 94

做一些流编辑来改变讨厌的Parallels图标。它开发得很差,嵌入到应用程序本身中,而不是一个图像文件。所以我找到了这个sed命令,它有一些很好的反馈:

代码语言:javascript
运行
复制
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

有人能解释一下这是什么意思吗?命令的哪一部分是问题所在?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-07-02 11:59:43

尝试设置LANG环境变量(LANG=C sed ...)或使用此处提到的二进制sed工具之一:binary sed replacement

为什么会出错?

如果没有LANG=C,sed假设文件是以LANG中指定的任何编码进行编码的,并且文件(二进制)可能包含字节,这些字节在LANG的编码中不是有效字符(因此,您可能会得到“非法字节序列”)。

LANG=C 为什么有效?

C恰好将所有ASCII字符视为自身,而将非ASCII字符视为文字。

票数 159
EN

Stack Overflow用户

发布于 2013-03-18 10:07:26

单独使用LANG=C并不能解决这个问题,但是添加LC_CTYPE=C也能解决这个问题。

票数 75
EN

Stack Overflow用户

发布于 2014-05-08 00:48:41

除了LANG=CLC_CTYPE=C之外,我还必须使用LC_ALL=C才能使其正常工作。

LC_ALL将覆盖所有单独的LC_*类别。因此,最健壮的方法是使用LC_ALL=C sed ... -不需要同时处理其他变量。

票数 29
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11287564

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档