替换电源外壳中的特殊字符范围



我正在尝试进行测试以替换文件中的特殊字符。 替换字符串模式包含我需要用?替换的范围内的字符

"Hello [char]0x00,[char]0x09,[char]0x0B,[char]0x1F,[char]0x7F,[char]0xFF" -replace  '[[char]0x00-[char]0x09[char]0x0B-[char]0x1F[char]0x7F-[char]0xFF]','?'
Hello [char]0x00,[char]0x09,[char]0x0B,[char]0x1F,[char]0x7F,[char]0xFF

现在上面的测试命令没有取代任何东西

如何测试这是否有效?

你能帮我编写命令来替换以下范围内的所有特殊字符吗?

\x00-\x09
\x0B-\x1F\x7F
-\xFF

你需要使用$((SubExpressions才能让你的代码工作。这样:

"Hello $([char]0x00),$([char]0x09),$([char]0x0B),$([char]0x1F),$([char]0x7F),$([char]0xFF)" -replace  "[$([char]0x00)-$([char]0x09)$([char]0x0B)-$([char]0x1F)$([char]0x7F)-$([char]0xFF)]","?"

输出:

Hello ?,?,?,?,?,?

这应该可以做到:

"Hello [char]0x00,[char]0x09,[char]0x0B,[char]0x1F,[char]0x7F,[char]0xFF" -replace '[char]0x0[0-9]|[char]0x0[B-F]|[char]0x1[A-F]|[char]0x[7F]F', '?'

最新更新