Ich habe eine generierte txt-Datei. Diese Datei enthält bestimmte Zeilen, die überflüssig sind und entfernt werden müssen. Jede Zeile, die entfernt werden muss, enthält eine von zwei Zeichenfolgen. "ERROR" oder "REFERENCE". Diese Token können an einer beliebigen Stelle in der Zeile erscheinen. Ich möchte diese Zeilen unter Beibehaltung aller anderen Zeilen löschen.
Also, wenn die txt-Datei so aussieht:
Gute Datenzeile Schlechte Zeile von C:\Directory\ERROR\myFile.dll Eine weitere gute Datenzeile Schlechte Zeile: REFERENCE Gute Linie
Ich möchte, dass die Datei so endet:
Gute Datenreihe Eine weitere gute Datenreihe Gute Datenreihe
TIA.
Verwenden Sie Folgendes:
type file.txt | findstr /v ERROR | findstr /v REFERENCE
Dies hat den Vorteil, dass Sie Standardtools unter Windows verwenden müssen, anstatt sed/awk/Perl und ähnliches zu finden und zu installieren.
Siehe dazu folgendes Protokoll in Betrieb:
C: \> type file.txt Good Line of Data Bad Line of C:\Directory\ERROR\myFile.dll Eine weitere gute Datenzeile schlechte Zeile: VERWEIS gute Zeile C: \> Typ file.txt | findstr/v FEHLER | findstr/v REFERENCE Gute Datenzeile Eine weitere gute Datenzeile Gute Datenzeile
Sie können dieselbe Lösung wie bei @ paxdiablo erzielen, indem Sie nur findstr für sich verwenden. Es ist nicht erforderlich, mehrere Befehle gleichzeitig auszuführen:
findstr /V "ERROR REFERENCE" infile.txt > outfile.txt
Details, wie das funktioniert:
Wenn Sie sed haben:
sed -e '/ REFERENCE/d' -e '/ ERROR/d' [DATEINAME]
Wobei FILENAME der Name der Textdatei mit den guten und schlechten Zeilen ist
Wenn Sie Perl installiert haben, sollte Perl -i -n -e"print unless m{(ERROR|REFERENCE)}"
den Trick machen.