替换文件中包含特殊字符的字符串
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"
}
我是 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"
}