SED-无法对UTF-8编码的字符执行某些命令

| 我得到一个看起来像这样的文件:
<text top=\"123\" left=\"45\" width=\"50\" height=\"17\" font=\"8\">Måndag</text>
如主题中所述,此文件以utf-8编码。使用此命令时:
cat file | sed \'s_.*top=\"\\([0-9][0-9]*\\)\" left=\"\\([0-9][0-9]*\\)\".*>\\(.*\\)<.*_\\1 \\2 \\3_\'
它永远不会完成执行并且什么也不打印。 但是执行这样的一行:
cat file | sed \'s/å/FOO/\'
给我正确的输出:
<text top=\"123\" left=\"45\" width=\"50\" height=\"17\" font=\"8\">MFOOndag</text>
这是sed中的错误,还是我的正则表达式或我使用它的方式有问题?我想要的是一种简洁的方法,可以在不涉及太多命令的情况下提取顶部,左侧和内容数据。
已邀请:
可靠地做到这一点的最简单方法是使用perl代替sed:
bash$ perl -CSAD -pe \'s/foo/bar/g\'
这将允许在您的参数,std流以及您处理的所有文件中使用Unicode。
并非所有sed都可以处理UTF-8。我将查看源代码,看看是否已应用任何相关补丁。 FTR,来自Red Hat的sed可以正确处理UTF-8。
试试这个建议。看起来它可以为您工作。

要回复问题请先登录注册