Software zum Löschen von Zeilen in einer Textdatei

Ich suche nach einer Windows-Software, die Zeilen in Textdateien nach einer bestimmten Zeile massenhaft löschen kann.

Beispielsweise enthält eine Datei 5 Zeilen. Ich möchte Zeilen nach der dritten Zeile löschen. sehen:

Line 1
Line 2
Line 3
xxxxxx
xxxxxx1

Hier möchte ich die ersten 3 Zeilen (Zeile 1, Zeile 2, Zeile 3) behalten und die verbleibenden 2 Zeilen (xxxxxx, xxxxxx1) löschen und diese Textdatei automatisch speichern. Ich möchte dies mit mehreren Textdateien tun. Möchten Sie jede Zeile nach der 3. Zeile in jeder Textdatei in einem Ordner löschen.

Irgendeine Windows-Software dafür?

Bitte beachten Sie, dass die Frage nach Software für X auf dieser Website zum Thema gehört, aber die Frage, wie man etwas mit Software macht (Kann ich das mit Notepad ++ machen), nicht zum Thema gehört - Sie sollten diese spezielle Frage an SuperUser richten.
Das war nicht meine einzige Frage. Ich habe nach einer Software gefragt und wenn Notepad++ das kann und jemand weiß, wie es geht, dann denke ich nicht, dass das für irgendjemanden ein Problem darstellt.

Antworten (3)

GnuWin kann das, zB sed. Geben Sie in der Befehlszeile ein

for %f in ("*.txt") do C:\...\sed -i "1,3!d" "%f"

Der forBefehl ist Teil der Windows-Befehlszeile. %fdefiniert eine Variable, die den Dateinamen enthält. in ("*.txt")definiert, welche Dateien verarbeitet werden sollen. do C:\...\sedweist Windows an, einen Befehl auszuführen.

-iwird eine In-Place-Operation ausführen, dh in dieselbe Datei schreiben. 1,3definiert eine Reihe von Zeilen, !wählt alle anderen Zeilen aus, dlöscht sie und "%f"übergibt die zu verarbeitende Datei an SED, damit es weiß, welche Datei verarbeitet werden soll.

GnuWin läuft unter Windows und ist kostenlos.

Erwägen Sie die Verwendung -i.bak, die ein Backup aller Dateien erstellt, bevor Sie sie ändern (mit der Erweiterung .bak).

Dies kann ohne Installation von Software erfolgen, sondern durch Erstellen eines einfachen Batch-Skripts. Hier ist ein Skript, das das tut, was Sie wollen:

@echo off > NEWFILE & setLocal enableDELAYedeXpansioN
set/p D=delete all after what line?
set N=
:main
for /f "tokens=* delims= " %%a in (file.txt) do (
set/a N+=1
if !N! leq !D! echo.%%a
) >> NEWFILE

Wo file.txtist die eigentliche Datei. Wenn Sie dieses Skript ausführen, werden Sie gefragt, welche Zeile danach gelöscht werden soll. Sagen Sie einfach 3. Kopieren Sie den obigen Code und fügen Sie ihn in eine .batDatei ein.

Es gibt viele Möglichkeiten, dies mit einfachen Unix/Linux-Tools zu tun.

Ich würde empfehlen, in Ihrem Fall awk zu verwenden. Um awk unter Windows auszuführen, können Sie eine Windows-Portierung von awk verwenden .

Meine persönliche Erfahrung ist, dass es sich schnell lohnt, awk zu lernen, wenn man ab und zu Textverarbeitung machen muss.