Powershell: in einer Textdatei eine bestimmte Zeile löschen.

Robmantuto

Ensign
Registriert
Apr. 2008
Beiträge
155
Ich habe eine Textdatei, in der ein bestimmtes Wort vorkommt, diese ganze Zeile mit diesem Wort würde ich gerne per Skript löschen wollen.
Ich habe es mit
Code:
get-content
versucht.
Leider weiss ich nicht wie ich nach dem Wort gesucht werden soll und die Zeile gelöscht werden soll.
 
schneller ungetesteter code

Code:
$file = Get-Content c:\datei.txt
$newFile = Get-Content c:\dateiNeu.txt

foreach($line in $file){
    
    if($line -notlike '*BösesWort*'){
        echo $line >> $newFile
    }
}
Remove-Item $file
Rename-Item $newFile $file
Remove-Item $newFile

geht sicher schöner schneller und allg. besser ^^
 
Ich würde das vermutlich mit LINQ lösen (auch wenn sich das nicht so schön ließt und eine .net Funktion nutzt):

$wortFilter = "unerwünschtes Wort"
$alterText = Get-Content "TextFile"
$neuerText = [System.Linq.Enumerable]::Where($alterText, [Func[object,bool]]{ param($line) -not $line.contains($wortFilter) })

Alternativ kannst du auch durch die Zeilen gehen und selber filtern.
 
Meine Lösung:
Code:
$file = Get-Content c:\datei.txt
$newFile | Out-File c:\datei.txt
 
foreach($line in $file){
    
    if($line -like '*BösesWort*'){
     }else
        $newFile | Out-File c:\datei.txt
    }
}
Ergänzung ()

Kann mir vielleicht einer sagen wie das Löschen einer Zeile mit einem bestimmten Wort per CMD geht?
 
Deine Lösung wird so nicht funktionieren, da du im Fall, dass das böse Wort nicht vorkommt, den gesamten Inhalt der der TXT inkl. der Zeilen mit bösem Wort wieder in die TXT schreibst.
Bzw. wenn ichs recht sehe die TXT sogar jedes Mal mit der unbefüllten Variable $newFile befüllst
Du musst an einer stelle entweder die TXT löschen oder leeren.

z.b.

Code:
    $file = Get-Content c:\datei.txt
    $newLine = ""
     
    foreach($line in $file){
        
        if($line -like '*BösesWort*'){
         }else{
            $newLine += $line
        }
    }
    $newLine | Out-File c:\datei.txt


Zum Thema Batch/ CMD link
 
Zurück
Oben