PowerShell Get-Content Foreach-object用下一个值替换当前行

时间:2011-11-14 16:02:45

标签: powershell

我希望使用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]]" }}

可以这样做吗?

1 个答案:

答案 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]
  }
)