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

Replacing a string in file containing special characters

我是 PowerShell 的新手,所以请多多包涵。我在尝试替换 Preference 文件中的一些字符串时遇到问题,但该文件包含一堆特殊字符。我怎样才能用这个'[{"id":"Save as 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

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

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

使用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"
}