首页 > 解决方案 > 用powershell用字符串替换数字(用双引号括起来)

问题描述

我正在运行以下 powershell 命令:

powershell -Command "(gc myfile1.json) -replace '1.7976931348623157E308', '""-Infinity""' | Out-File myFile.json"

powershell -Command "(gc myfile1.json) -replace '4.9E-324', '""-Infinity""' | Out-File myFile.json"

我的输出文件中有 Infinity,但我希望它被双引号包围->“Infinity”

我应该如何进行?我尝试使用以下转义字符:`" 但我必须错过一些东西,因为这也不起作用。

非常感谢您的帮助。

标签: powershell

解决方案


如果用外部双引号将 powershell 命令括起来,则:

  • 必须转义内部双引号,否则 cmd.exe 会绊倒管道符号 - 自行解释它们。
  • 同时,您可以使用一个-replaceRegEx 交替替换您的两个替代品

powershell -NoP -C "(gc myfile1.json) -replace '4.9E-324|1.7976931348623157E308', '\"-Infinity\"' | Out-File myFile.json"

或者,您可以省略外部双引号,但必须使用插入符号转义管道符号。

powershell -NoP -C (gc myfile1.json) -replace '4.9E-324^|1.7976931348623157E308', '"-Infinity"' ^|Out-File myFile.json

推荐阅读