仅在前一行包含特定短语的情况下,才能从文本文件中删除行

时间:2019-07-16 15:26:01

标签: powershell

我正在寻找一种仅在上一行包含特定短语的情况下通过Powershell从文本文件中删除行的方法

对于Powershell来说是非常新的东西,所以还没有尝试很多东西。 我已经到了可以删除有问题的行的地步,但是无法弄清楚如果上面的行中有特定的短语,如何从删除中保存行

$data = foreach($line in get-content C:\e.g\test.txt){ 
  if($line -like "*Example*"){

  }
  else{
    $line
  }
}

$data |set-content C:\e.g\test.txt -force

这会删除我需要删除的行,但也会删除我需要保存的行。

$data = foreach($line in get-content C:\e.g\test.txt){ 
  if($line -like "*Example*" -and previous line -like "*Phrase"*){

  }
  else{
    $line
  }
}

$data |set-content C:\e.g\test.txt -force

正在寻找类似上面的内容来指定上一行内容

感谢任何人对此提供的帮助/解决方案。

1 个答案:

答案 0 :(得分:0)

您可以使用以下内容:

$previous = $null
$data = foreach ($line in Get-Content C:\e.g\test.txt) {
    if ($line -notlike "*Example*" -or $previous -notlike "*Phrase*") {
        $line
    }
    $previous = $line
}
$data | Set-Content C:\e.g\test.txt -force

如果满足以上条件之一,则不会删除该行。因此,-or之间的两个条件都必须为假,然后才忽略该行。