如何更换[&\ u0009 \ u000A \ u000D \ u0020- \ uD7FF \ uE000- \ uFFFD \ u10000- \ u10FFF] +到""在sed或任何文件的文件?

时间:2016-04-15 01:16:03

标签: xml linux bash sed

我使用文本编辑器找到并替换xml文件中的一些奇怪字符。 正则表达式

[^\u0009\u000A\u000D\u0020-\uD7FF\uE000-\uFFFD\u10000-\u10FFF]+ ---> "" 

现在,我需要在linux命令行中使用它。

我问你如何在linux命令行中使用sed或任何相同的查找和替换作业。

提前谢谢

1 个答案:

答案 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代码。