【发布时间】:2020-12-29 18:21:10
【问题描述】:
我正在尝试在.sln 文件中的$pattern 之前添加一行。唯一的问题是,当我尝试在 if 语句中添加 $firstOccurrence 条件时,它根本没有添加任何内容。它仍然会触发 Write-Debug。
现在第一次出现的部分已被注释掉,但我似乎无法找出为什么在我设置第一次出现时它没有写任何东西。
我的解决方案的原始来源可以在这里找到: How to declare a variable and its type is Boolean in PowerShell?
$firstOccurrence = $true;
$pattern = "Global"
(Get-Content $fileName) | Foreach-Object {
#if ($firstOccurrence) {
if ($_ -match $pattern) {
Write-Debug "test"
$firstOccurrence = $false
#Add Lines after the selected pattern
"aaaaaaaaaaaaaaaaaaaaaaa"
}
#}
# send the current line to output
$_
} | Set-Content $fileName
【问题讨论】:
-
对我来说效果很好。所以文件中有多个“全局”,这就是为什么你担心第一次出现?
-
是的,当我省略
$firstOccurrence时,它工作正常并将该行添加到所有找到的行中。但是当我添加条件和$firstOccurrence时,它不会添加任何东西。 -
请更准确地输出您想要的输出。标题说 [1] 在第一次出现某些模式之前添加一个 字符串。问题本身说 [2] 在模式之前添加一个 line ,而代码中的注释似乎解释了您想要在模式 after 之后添加一行。我给了你一个处理 [1] 和 [2] 的答案,但到目前为止你只回答 它不起作用。 Edit你的问题并显示输出应该是什么样子。
标签: powershell