unix - 使用 sed 或 tr unix 命令使用 Unicode 代码或十六进制替换重音字符或特殊字符

标签 unix unicode replace sed

我想知道我是否可以使用在 http://www.utf8-chartable.de/unicode-utf8-table.pl?utf8=0x&unicodeinhtml=hex 中找到的字符集使用 sed 或 tr 替换重音字符或特殊字符。

我有一个使用 sed 命令的脚本。有时它不起作用:(

它是这样的:

sed -e "s/\"//g" \
                -e "s/\'//g" \
                -e "s/[$]/S/g" \
                -e "s/%//g" \
                -e "s/&/E/g" \
                -e "s/@/a/g" \
                -e "s/\^//g" \
                -e "s/\`//g" \
                -e "s/|//g" \
                -e "s/~//g" \
                -e "s/¡/i/g" \
                -e "s/¨//g" \
                -e "s/\´//g" \
                -e "s/¢/c/g" \
                -e "s/£//g" \
                -e "s/§//g" \
                -e "s/¬//g" \
                -e "s/°/o/g" \
                -e "s/·/./g" \
                -e "s/¹/1/g" \
                -e "s/²/2/g" \
                -e "s/³/3/g" \
                -e "s/¿//g" \
                -e "s/ª/a/g" \
                -e "s/à/a/g" \
                -e "s/á/a/g" \
                -e "s/â/a/g" \
                -e "s/ã/a/g" \
                -e "s/ä/a/g" \
                -e "s/å/a/g" \
                -e "s/æ/ae/g" \

Os,我在想如果我在 sed 中使用十六进制或八进制 unicode 代码,它会起作用。但是我不知道怎么...

e.g. echo ¢ | sed 's/\x{00A2}/cent/g'

感谢您的帮助。

最佳答案

你的脚本

…对我来说很好用。每个替换都按预期执行,除了一个:

-e "s/\'//g" \

应该是

-e "s/'//g" \

(不需要转义单引号,你的表达式在双引号之间。)

应用于包含

的文件
"'$%&@^`|~¡¨´¢£§¬°·¹²³¿ªàáâãäåæ

它输出:

  S E a   i  c   o.123 aaaaaaaae

(没有空格。我添加它们是为了更容易比较 orginialm 模式和替换。)

十六进制代码

要用十六进制代码替换,请使用以下语法:

echo ¢ | sed 's/\xC2\xA2/cent/g'

为什么会这样?使用 \xXX 语法将十六进制值 XX 赋予 sed(请参阅 info sed)。对于您的 ¢ 字符,您链接的网页表格的第三列给出了 0xc2 0xa2

编码

当您尝试替换 UTF-8 编码字符时,我假设您的文件使用 UTF-8 编码。如果不是,一个快速的解决方案是将其(或其副本)转换为 UTF-8(例如使用您最喜欢的文本编辑器)。

关于unix - 使用 sed 或 tr unix 命令使用 Unicode 代码或十六进制替换重音字符或特殊字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24427209/

相关文章:

linux - 在 CSV 文件中,我想从 UNIX 中文件第三列的 10 个字符中剪切前 5 个字符

linux - 删除非数值 - Unix

python - 如何将一个大文件分割成多个文件?

go - 如何在 Golang 中将全角数字字符转换为 Ascii?

c++ - LoadLibraryW 在 LoadLibraryA 完成工作时不起作用

javascript - 通过 Javascript (Node.JS) 更改 JSON 返回中图像标签的宽度

linux - 如何获取组中进程的PID列表

javascript - 如何使用 jQuery 或纯 JavaScript 检索 Unicode 转义序列?

java - 替换全部()和替换第一()。哪一种更快、更高效?

regex - 用给定文本递归包装正则表达式