用powershell用字符串(用双引号引起来)替换数字

时间:2019-02-14 13:40:19

标签: 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”

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

非常感谢您的帮助。

2 个答案:

答案 0 :(得分:2)

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

  • 必须转义内部的双引号,因为否则cmd.exe会迷住管道符号-解释它们本身。
  • 您可以同时使用一个-replace正则表达式和两个替换项交替使用

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

答案 1 :(得分:1)

这是因为它是在命令参数中作为字符串传递的字符串,所以您必须添加一个转义级别:

powershell -Command "(gc d:\test.txt) -replace 'x','\""y\""' | out-file D:\result.txt"

编辑:语法荧光笔不喜欢它,但是语法正确。