有没有人知道删除该行的命令,如果它包含某个文本? -notmatch
并不是我正在寻找的东西。
foreach($item in $csv)
{
if($item -contains "@text.com")
{
#do something
}
}
答案 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;