Powershell,删除命令(如果包含)

时间:2017-06-29 07:31:34

标签: powershell

有没有人知道删除该行的命令,如果它包含某个文本? -notmatch并不是我正在寻找的东西。

  foreach($item in $csv)
    {
      if($item -contains "@text.com")
      {
        #do something
      }
    }

3 个答案:

答案 0 :(得分:1)

-notmatch 你所追求的是什么,你可能试图以错误的方式使用它。

Get-Content c:\folder\file.txt | Select-String -pattern "@text.com" -notmatch | Out-File c:\folder\newfile.txt

答案 1 :(得分:0)

$fileName = "d:\DevProjs\PowerShell\test1.txt";
$newFile = "d:\DevProjs\PowerShell\test1_new.txt";
$searchPattern = "some_text";
$text = Get-Content $fileName

ForEach ($line in $text)
{
    if (-Not(Select-String -Pattern $searchPattern -Quiet -InputObject $line))
    {
        Add-Content $newFile -Value $line;
    }
}

答案 2 :(得分:0)

...删除行的命令... :-D

$fileName = "d:\DevProjs\PowerShell\test1.txt";
$newFile = "d:\DevProjs\PowerShell\test1_new.txt";
$searchOrigText = "some text";

$Content = Get-Content $fileName -Raw


$newLinePattern = "(\n|\r|\r\n)";

$firstLinePattern = "^.*" + $searchOrigText + ".*" + $newLinePattern + "{0,1}";

$lastLinePattern = $newLinePattern + ".*" + $searchOrigText + ".*$";

$middleLinePattern = $newLinePattern + ".*" + $searchOrigText + ".*" + $newLinePattern;

# Remove middle lines if needed
$searchPattern = $middleLinePattern;
$replaceText = "`n";
$regEx = New-Object System.Text.RegularExpressions.Regex($searchPattern);
$Content = $regEx.Replace($Content, $replaceText);

# Remove first line if needed
$searchPattern = $firstLinePattern;
$replaceText = "";
$regEx = New-Object System.Text.RegularExpressions.Regex($searchPattern);
$Content = $regEx.Replace($Content, $replaceText);

# Remove last line if needed
$searchPattern = $LastLinePattern;
$replaceText = "";
$regEx = New-Object System.Text.RegularExpressions.Regex($searchPattern);
$Content = $regEx.Replace($Content, $replaceText);


Set-Content -Path $newFile -Value $Content;