我使用文本编辑器找到并替换xml文件中的一些奇怪字符。 正则表达式
[^\u0009\u000A\u000D\u0020-\uD7FF\uE000-\uFFFD\u10000-\u10FFF]+ ---> ""
现在,我需要在linux命令行中使用它。
我问你如何在linux命令行中使用sed或任何相同的查找和替换作业。
提前谢谢
答案 0 :(得分:0)
你可以试试这个:
sed 's/\\u\(0009\|000A\|000D\|0020\|D7FF\|E000\|FFFD\|10000\|10FFF\)//g' <<< "[^\u0009\u000A\u000D\u0020-\uD7FF\uE000-\uFFFD\u10000-\u10FFF]"
在更换之前,请确保您确实要替换此字符,因为其中一些是制表符,换行符,空格......
更新:
基于4-5六进制代码示例的另一种通用模式:
sed 's/\\u[0-9A-F]\{4\}[0-9A-F]\?//g' <<< "[^\u0009\u000A\u000D\u0020-\uD7FF\uE000-\uFFFD\u10000-\u10FFF]"
将替换所有\u
后跟4或5个hexa代码
请注意,4个六进制代码字符串后面的大写单词(即Foo)将匹配:
\u0000Foo
将更改为oo
,因为Foo的F
将匹配第5个可选的hexa代码。