PowerShell Get-Content Foreach-объект для замены текущей строки значением из следующего - PullRequest
0 голосов
/ 14 ноября 2011

Я хочу заменить значение в текущей строке значением из следующей строки, используя 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 Ответ

1 голос
/ 14 ноября 2011

Не прямо внутри 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]
  }
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...