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

发布于 2024-11-02 07:25:49 字数 597 浏览 1 评论 0原文

我得到一个如下所示的文件:

<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 中的错误还是我的正则表达式或我使用它的方式有问题?我想要的是一种简洁的方法来提取顶部、左侧和内容数据,而不涉及太多命令。

I got a file that looks like this:

<text top="123" left="45" width="50" height="17" font="8">Måndag</text>

As noted in the topic, this file is encoded in utf-8. When using this command:

cat file | sed 's_.*top="\([0-9][0-9]*\)" left="\([0-9][0-9]*\)".*>\(.*\)<.*_\1 \2 \3_'

it never completes the execution and prints nothing.

However executing a line like this one:

cat file | sed 's/å/FOO/'

gives me a correct output:

<text top="123" left="45" width="50" height="17" font="8">MFOOndag</text>

Is this a bug in sed or is there something wrong with my regex or the way that I'm using it? What I want is a neat way to extract the top, left and content data without involving too many commands.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

南烟 2024-11-09 07:25:49

可靠地做到这一点的最简单方法就是使用 perl 代替 sed:

bash$ perl -CSAD -pe 's/foo/bar/g'

这将允许在您的参数、std 流和您处理的所有文件中使用 Unicode。

The easiest way to do this reliably is just to use perl in place of sed:

bash$ perl -CSAD -pe 's/foo/bar/g'

That will allow Unicode in your arguments, your std streams, and all files you process.

最美不过初阳 2024-11-09 07:25:49

并非所有 sed 都是为处理 UTF-8 而构建的。我会查看源代码以查看是否已应用任何相关补丁。 FTR、Red Hat 派生的 sed确实 可以正确处理 UTF-8。

Not all seds are built to handle UTF-8. I would look at the source to see if any relevant patches have been applied. FTR, Red Hat-derived seds do handle UTF-8 properly.

冷情妓 2024-11-09 07:25:49

尝试这个建议。看起来它对你有用。

Try this suggestion. Looks like it could work for you.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文