当前位置: 首页 > 面试题库 >

sed为什么会出现国际字符失败以及如何解决?

酆恩
2023-03-14
问题内容

GNU sed 4.1.5版本似乎因国际字符而失败。这是我的输入文件:

Gras Och Stenar传统-从Moja到Minneapolis DVD [G2007DVD] 7812 | X
Gras Och Stenar传统-从莫亚到明尼阿波利斯DVD [G2007DVD] 7812 | ÿ

(请注意第二行的变音符号。)

当我这样做

sed的/.* | //’<in

我希望只看到X和Y,因为我已要求删除所有字符,直到“ |”为止 和超越它的空间。相反,我得到:

X
Gras Och Stenar传统-来自M?ÿ

我知道我可以使用tr删除国际字符。首先,但是有一种方法只能使用sed吗?


问题答案:

我认为如果文件的输入编码与环境的首选编码不同,则会发生错误。

示例:in是UTF-8

$ LANG=de_DE.UTF-8 sed 's/.*| //' < in
X
Y
$ LANG=de_DE.iso88591 sed 's/.*| //' < in
X 
Y

UTF-8可以安全地解释为ISO-8859-1,您会得到奇怪的字符,但除此之外一切都很好。

示例:in是ISO-8859-1

$ LANG=de_DE.UTF-8 sed 's/.*| //' < in
X
Gras Och Stenar Trad - From MöY
$ LANG=de_DE.iso88591 sed 's/.*| //' < in
X 
Y

ISO-8859-1无法解释为UTF-8,解码输入文件失败。奇怪的匹配可能是由于sed试图恢复而不是完全失败的事实。

答案是基于Debian Lenny / Sid的,并且是sed 4.1.5。



 类似资料:
  • 昨天在一次采访中,有人问我,Spring的国际奥委会和国际奥委会是什么。我的回答是: 当a扩展抽象的或实现或创建其中任何类的的对象时,则称a依赖于。注入这种依赖关系,即在costructor或setter方法中注入对象称为DI,在这个过程中,对创建对象的控制权转移到“外部世界”,比如XML配置,这种控制权的反转是IoC。国际奥委会不需要DI。在没有国际奥委会的情况下,我们仍然可以使用DI。 面试官

  • 我们使用Assertj Swing3.9.2进行的gui单元测试偶尔会以难以重现的方式失败。有时整个测试套件是绿色的,有时一些测试用例失败。我们使用Ubuntu18.04LTS和GNOME两台不同的机器,我们得到了相同的错误。 抛出的异常有两个,并不时出现在不同的测试用例中: null null 此外,在不同的测试用例中,重复运行多次相同的测试可能会导致失败或成功。 特拉维斯-奇的测试也失败了。

  • 问题内容: 我无法理解如何正确确保在这种情况下不存在某些问题: 我发现检查该值是否实际的唯一方法是使用反射。 这真的是想要的行为吗?还是在代码中看不到一些重大错误? 在此处播放链接 问题答案: 这里的问题是那是一种类型。Go中的接口类型保存实际值及其 动态 类型。关于此的更多详细信息:反射定律#接口的表示。 您返回的切片包含2个非值。第二个值是一个接口值,一个保存指针值的(值;类型)对和一个具体类

  • 问题内容: 当我运行以下代码时: 我得到一个异常说: 为什么会出现此异常? 编辑:tmpList是一个LinkedList,其每个节点都包含DepConfAttr类型的对象。 我正在基于内存(首先是最高内存)对tmpList进行排序,这是DepConfAttr对象的属性之一。 上面的代码反映了我要通过以下代码实现的目标 问题答案: 为什么会出现此异常? 您要遍历列表,而不是通过迭代器从列表中删除一

  • 问题内容: 我有一个Android应用程序,我想检查安装的应用程序名称是否与传递给包含此代码的函数的字符串匹配。代码和示例如下: 假设您打过电话,并且手机上的应用程序名称与返回的名称相同。但是,它永远不会。我记录了结果,它应该匹配,但事实并非如此。任何人都可以请问我为什么这行不通吗? 问题答案: 使用String的equals()方法代替==运算符来比较字符串: 在Java中,新手遇到的最常见错误

  • 问题内容: 有人可以给出一个清晰的定义,以及一个简单的示例,为不了解JavaScript和node.js的人解释什么是“回调地狱”吗? 什么时候(以哪种设置)发生“回调地狱问题”? 为什么会发生? “回调地狱”是否总是与异步计算相关? 还是在单线程应用程序中也可能发生“回调地狱”? 我在Coursera参加了“反应式课程”,Erik Meijer在他的一次演讲中说RX解决了“回调地狱”的问题。我在