我正在尝试编写一个powershell实例来查找并替换每个文本实例并替换它。
UserRights "rights_wo_view"
我需要在引号周围放置括号。我一直在尝试各种各样的事情,但我一直在跑步。
$files = get-item C:\Users\programmer\Documents\Project\tsbrick\*.asp
foreach ($file in $files)
{(Get-Content $file)
select-string -pattern ('UserRights')
ForEach-Object {
$_ -replace '"r','("r'
$_ -replace '"p','("p'
$_ -replace '"','");'
} | Out-File $file}
答案 0 :(得分:2)
不是最好的正则表达式,但这将是一个良好的开端。你没有具体说明这条线是什么样的,所以我假设它在变量空白和/或文本的独立行上。
Get-ChildItem C:\temp\*.asp | ForEach-Object{
$file = $_.FullName
(Get-Content $file) -replace '(.*UserRights\s*)"(.*?)"(.*)','$1("$2")$3' | Set-Content $file
}
使用正则表达式查询可以减少链接这些替换的需要,Set-Content
被认为优先于Out-File
。 -replace
用作数组运算符,因此我们根本不需要使用select-string
,因为您仍希望保留其余文件内容。这将查找带有“UserRights”的行,然后查找引号内的一些内容。捕获这些部分并使用添加的括号将它们写回文件。
实际上,文件包含以下行:
o consequat. UserRights "rights_wo_view" Duis aute irure dolor in reprehenderi
应该成为这个,同时保持文件的其余部分不变。
o consequat. UserRights ("rights_wo_view") Duis aute irure dolor in reprehenderi