sed:将unicode块与

sed:将unicode块与,unicode,utf-8,sed,unicode-escapes,Unicode,Utf 8,Sed,Unicode Escapes,我正在拼命尝试使用sed替换文件中的某些unicode字符(graphemes)。但是,对于其中的一些,即来自unicode块的,我一直失败: \p{InHigh_Surrogates}: U+D800–U+DB7F \p{InHigh_Private_Use_Surrogates}: U+DB80–U+DBFF \p{InLow_Surrogates}: U+DC00–U+DFFF 我尝试过(在通过-f开关加载的sed配置文件中): 有人有什么建议吗?此外,我不一定要专注于使用块,但我也未能

我正在拼命尝试使用sed替换文件中的某些unicode字符(graphemes)。但是,对于其中的一些,即来自unicode块的,我一直失败:

\p{InHigh_Surrogates}: U+D800–U+DB7F
\p{InHigh_Private_Use_Surrogates}: U+DB80–U+DBFF
\p{InLow_Surrogates}: U+DC00–U+DFFF
我尝试过(在通过-f开关加载的sed配置文件中):

有人有什么建议吗?此外,我不一定要专注于使用块,但我也未能尝试定义\xd800-\xdfff形式的字符范围

谢谢,
Thomas

尝试使用sed的
-r
标志:

$ sed -r 's/\\p\{InHigh_Surrogates\}/###/g' file
###: U+D800–U+DB7F
\p{InHigh_Private_Use_Surrogates}: U+DB80–U+DBFF
\p{InLow_Surrogates}: U+DC00–U+DFFF
man sed

-r,--regexp扩展

在脚本中使用扩展正则表达式


谢谢我觉得,需要改变一些其他行,以及-但仍然在高_代理似乎是一个问题…但它是否对你工作?如果没有,请用您面临的确切问题更新您的问题。如果是,请注意,您可以将答案标记为已接受。很抱歉,答案不准确-否,使用
-r
也无法工作。在我看来,SED似乎不知道unicode块——或者我太笨了,无法让它工作;)我无法给出比所提供的更清楚的解释。在这两种情况下,我都会收到与我最初发帖中描述的相同的错误消息。很抱歉,我不知道还有什么可能。您可以尝试在可能的选项中签入此网站。例如,原因可能是代理在UTF-8中无效。
$ sed -r 's/\\p\{InHigh_Surrogates\}/###/g' file
###: U+D800–U+DB7F
\p{InHigh_Private_Use_Surrogates}: U+DB80–U+DBFF
\p{InLow_Surrogates}: U+DC00–U+DFFF