我正在拼命尝试使用sed从文件中替换某些unicode字符(字形)。但是我继续为其中一些失败,即来自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配置文件中):
s/\p{InHigh_Surrogates}/###/ --> no effect at all
s/\\p\{InHigh_Surrogates\}/###_D-NON-UTF8_###/ -> error message 'Invalid content of \{\}'
有人有个建议吗?此外,我不一定专注于使用块 - 但我也尝试定义\ xd800- \ xdfff形式的字符范围。
谢谢, 托马斯
答案 0 :(得分:2)
尝试使用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, - regexx-extended
在脚本中使用扩展正则表达式。