替换文件中包含特殊字符的字符串

时间:2020-10-30 19:12:47

标签: windows powershell file-get-contents

我对PowerShell完全陌生,所以请多多包涵。我在尝试替换首选项文件中的某些字符串时遇到问题,但是该文件包含一堆特殊字符。我将如何用此[[{“ id”:“另存为PDF”'替换此'[{“ id”:“ *”'。另外,第一个参数中的*是正则表达式。

代码如下:

$filepath='C:\Users\%USERNAME%\AppData\Local\Google\Chrome\User Data\Profile 8\'

cd $filepath

(Get-Content Preferences) -replace '[{\"id\":\"*"', '[{\"id\":\"Save as PDF\"' | Out-File -encoding ASCII Preferences

2 个答案:

答案 0 :(得分:0)

如果要匹配0-n个字符,请使用.*而不是*。另外,您必须转义[{,因为它们是正则表达式中的特殊字符。 这是最终的正则表达式:

-replace  '\[\{"id":".*"', '[{"id":"Save as PDF"

答案 1 :(得分:0)

使用convertfrom-json的简单示例:

cat file.json
{
    "id":  "Save as PDF"
}

$a = get-content file.json | convertfrom-json

$a

id
--
Save as JPG


$a.id = 'Save as PDF'
$a | convertto-json
{
    "id":  "Save as PDF"
}

$a | convertto-json | set-content file.json
cat file.json
{
    "id":  "Save as PDF"
}