gpt4 book ai didi

如果行以特定字符开头,则 powershell 替换命令

转载 作者:行者123 更新时间:2023-12-02 22:39:35 26 4
gpt4 key购买 nike

我有一个文本文件,我想阅读它并仅在该行以特定字符开头时才使用 powershell 进行一些替换。

说,当且仅当该行以 y 开头时,我想将所有破折号 (-) 更改为“x”。

我尝试使用命令

(Get-Content trial.log2) | Foreach-Object {$_ -replace "-", 'x'} | Set-Content trial.log2

但是,它实际上替换了所有出现的破折号,而不仅仅是以 y 开头的行。

如果我想使用一个获取内容命令进行多次查找替换和字符串操作,是否也可以这样做?

我有另一个字符串操作,但前提是它以 F 开头

如果行以 F 开头,则获取该行的前 4 个字符,然后附加“NEW”,然后获取从字符 20 到 30 的下一个字符。

如果行以 y 开头,则将 - 替换为 X。

 $F=(get-content $file) -like 'F*'
(Get-Content $file) | Foreach-Object {
$_ -replace "^F.+", -join("$F".Substring(0,4), "$NEW3",
} | Set-Content trial.log2

Get-Content trial.log2 | ForEach-Object {
if ( $_ -match '^y' ) {
$_ -replace '-', 'X'
}
else {
$_
}
} | Set-Content trial.log3

但是,如果我这样做,文本将被写入两次。我认为我查找以 F 开头的行的方式有问题任何帮助表示赞赏。谢谢!

最佳答案

您可以使用后视 ((?<=pattern)) 断言前面的字符包含 y在字符串的开头之后:

(Get-Content trial.log2) | Foreach-Object {$_ -replace '(?<=^y.*)-','x'} | Set-Content trial.log2

关于如果行以特定字符开头,则 powershell 替换命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48911522/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com