gpt4 book ai didi

bash-使用sed用unicode字符替换数字

转载 作者:行者123 更新时间:2023-12-04 14:34:52 52 4
gpt4 key购买 nike

所以我从 printf 生成了这个输出

    011010

现在我想用管道传输它并使用 sed 用 unicode 字符替换 0 和 1,所以我打印的是 unicode 字符而不是二进制 (011010)。

我可以这样做只是复制粘贴字符本身,但我想使用值来代替在 unicode 表中找到的值:
    Position: 0x2701
Decimal: 9985
Symbol: ✁

如何将上述值与 sed 一起使用来生成字符?

最佳答案

使用 bash(自 v4.2 起)或 zsh,简单的解决方案是使用 $'...'语法,理解 C 转义,包括 \u逃脱:

$ echo 011010 | sed $'s/1/\u2701/g'
0✁✁0✁0

如果你有 Gnu sed,你可以在 s// 中使用转义序列命令。 GNU sed可惜,不懂 \u unicode 转义,但它确实理解 \x十六进制转义。但是,要让它解码它们,您需要确保它看到反斜杠。然后就可以进行UTF-8的翻译了,假设你知道Unicode码点对应的UTF-8序列:
$ # Quote the argument
$ echo 011010 | sed 's/1/\xE2\x9C\x81/g'
0✁✁0✁0
$ # Or escape the backslashes
$ echo 011010 | sed s/1/\\xE2\\x9C\\x81/g
0✁✁0✁0
$ # This doesn't work because the \ is removed by bash before sed sees it
$ echo 011010 | sed s/1/\xE2\x9C\x81/g
0xE2x9Cx81xE2x9Cx810xE2x9Cx810
$ # So that was the same as: sed s/1/xE2x9Cx81/g

关于bash-使用sed用unicode字符替换数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27140408/

52 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com