Does anyone know the command for removing the line, if it contains a certain text? -notmatch
isn't what i'm looking for.
foreach($item in $csv)
{
if($item -contains "@text.com")
{
#do something
}
}
Does anyone know the command for removing the line, if it contains a certain text? -notmatch
isn't what i'm looking for.
foreach($item in $csv)
{
if($item -contains "@text.com")
{
#do something
}
}
-notmatch
is what you are after, you're probably trying to use it in the wrong way.
Get-Content c:\folder\file.txt | Select-String -pattern "@text.com" -notmatch | Out-File c:\folder\newfile.txt
$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;
}
}
...command for removing the line... :-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;