我希望使用PowerShell将当前行中的值替换为下一行中的值。类似的东西:
gci | foreach {(gc $_.FullName) | foreach-object {
$a = #Here I want to use a regex to strip the ProductId from the next line
$_ -replace 'In Stock', "[[Availability ProductId=$a]]" }}
可以这样做吗?
答案 0 :(得分:1)
不直接在ForEach-Object
内,没有。你可以作弊:
$x = $null
Get-Content c:\mypath\file.htm <# who puts files there? #> |
ForEach-Object {
if ($x -eq $null) {
$x = $_
} else {
$x -replace 'This Value', $_ # or whatever you need from the next line
}
}
另一种方法是使用正常方式:
$lines = Get-Content c:\mypath\file.htm
$replacedLines = $(
for ($i = 0; $i -lt $lines.Length - 1; $i++) {
$lines[$i] -replace 'This Value', $lines[$i+1]
}
)