2016-04-05 2 views
0

Ich suche nach einem Befehl oder einem Skript, mit dem ich unter Windows eine ganze Zeile aus * .txt oder * löschen kann .csv-Dateien.Skript/Befehl (Befehlszeilen-basiert oder PowerShell) zum Löschen einer ganzen Zeile mit einem bestimmten Zeichenfolgenwert

Fall: Ich habe eine Datei mit dem Namen abc.csv mit unten genannten Zeilen. Ich möchte alle Zeilen löschen, die entweder .dll oder volume enthalten.

abc.csv

value.dll 
setup.exe 
installer.exe 
setup.dll 
volume serial 
serial 

Nachdem das Script/Befehl ausführen würde Ich mag mit nur unterhalb Linien abc.csv links

Output-Datei (abc.csv)

setup.exe 
installer.exe 
serial 

Bitte schlagen Sie vor, wie kann dies tun?

Antwort

0

eine Batch-Datei Lösung:

@echo off 
if not exist "abc.csv" goto :EOF 
%SystemRoot%\System32\findstr.exe /I /V /C:".dll" /C:"volume" "abc.csv" >"%TEMP%\abc.csv" 
move /Y "%TEMP%\abc.csv" "abc.csv" 

Die Linie mit findstr sucht wegen /I Fall- Insensitiv (Ignore case) für .dll oder volume in Datei abc.csv und Ausgaben wegen /V (inVerted) alle Zeilen, die KEINES dieser 2 Zeichenfolgen enthalten.

Vielleicht besser für dritte Zeile:

%SystemRoot%\System32\findstr.exe /I /R /V /C:"\.dll$" /C:"^volume" "abc.csv" >"%TEMP%\abc.csv" 

Jetzt mit regulärem Ausdruck .dll muss am Ende einer Zeile und volume gefunden werden muss am Anfang einer Zeile gefunden wird, dass die Leitung auf Ausgang zu ignorieren.

Um die verwendeten Befehle und ihre Funktionsweise zu verstehen, öffnen Sie ein Eingabeaufforderungsfenster, führen Sie die folgenden Befehle aus und lesen Sie alle Hilfeseiten, die für jeden Befehl angezeigt werden, sorgfältig durch.

  • echo /?
  • findstr /?
  • goto /?
  • if /?
  • move /?

Lesen Sie auch die Microsoft Artikel über Using command redirection operators.

+0

Danke Mofi für die Details zu erklären. Ihre Antwort hat geantwortet und mein Problem gelöst. –

0

hier ein Skript eine Zeile aus der Befehlszeile mit Ruby ausgeführt werden

ruby -ne 'print unless $_[/unwanted/]' < file.txt 
Verwandte Themen