txt-Datei mit mehrere gleiche Zeilen durchsuchen und jeweils einmal ausgeben
Hallo,
habe folgendes Problem: ich möchte aus einen Text die mehrmals gleiche Einträge hat jeweils eins dieser Einträge rausfiltern und in eine andere .txt abspeichern mittel eine Batch-Datei.
Die Daten sehen wie folgt aus:
(Beispiel)
Opel Astra Caravan (1,6)
Opel Astra Caravan (2,0)
Opel Astra Wimbledon (1,6)
Opel Astra Caravan (1,6)
Opel Astra Caravan (2,0)
Opel Astra Caravan (1,6)
In die erstellte Datei sollte dann stehen:
Opel Astra Caravan (1,6)
Opel Astra Caravan (2,0)
Opel Astra Wimbledon (1,6)
Wie wird dass gemacht?
Gruß,
malleetje
habe folgendes Problem: ich möchte aus einen Text die mehrmals gleiche Einträge hat jeweils eins dieser Einträge rausfiltern und in eine andere .txt abspeichern mittel eine Batch-Datei.
Die Daten sehen wie folgt aus:
(Beispiel)
Opel Astra Caravan (1,6)
Opel Astra Caravan (2,0)
Opel Astra Wimbledon (1,6)
Opel Astra Caravan (1,6)
Opel Astra Caravan (2,0)
Opel Astra Caravan (1,6)
In die erstellte Datei sollte dann stehen:
Opel Astra Caravan (1,6)
Opel Astra Caravan (2,0)
Opel Astra Wimbledon (1,6)
Wie wird dass gemacht?
Gruß,
malleetje
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 82964
Url: https://administrator.de/forum/txt-datei-mit-mehrere-gleiche-zeilen-durchsuchen-und-jeweils-einmal-ausgeben-82964.html
Ausgedruckt am: 22.04.2025 um 02:04 Uhr
12 Kommentare
Neuester Kommentar
@miniversum
Falls die Liste zB so
Grüße
bastla
Falls die Liste zB so
Opel Astra Caravan (1,6)
Opel Astra Caravan (2,0) S
Opel Astra Wimbledon (1,6)
Opel Astra Caravan (2,0)
Opel Astra Caravan (1,6)
Opel Astra Caravan (2,0)
Opel Astra Caravan (1,6)
aussähe, bliebe "Opel Astra Caravan (2,0)" auf der Strecke ...Opel Astra Caravan (2,0) S
Opel Astra Wimbledon (1,6)
Opel Astra Caravan (2,0)
Opel Astra Caravan (1,6)
Opel Astra Caravan (2,0)
Opel Astra Caravan (1,6)
Grüße
bastla
Moin malleetje, bastla und miniversum,
wenn ich die Aufgabenstellung richtig lese (...in der erstellten Datei soll stehen...),
dann würde ich noch einen SORT reinbringen und es am CMD-Prompt so abfeuern:
[OT, aber doch ganz passend hier]
Ein neuer M$-CMD-Bug tritt neuerdings (seit irgendeinem KB-Update??) auf, zumindest auf XP-Rechnern:
Ein "echo." funktioniert nicht mehr zum Leerzeilen-Ausgeben.
Statt des Punktes "." direkt nach dem "echo" kann aber nach wie vor eines der anderen bisher funktionierenden undokumentierten Zeichen ("\", "?", .....) verwendet werden, um eine "leere Zeile" auszugeben.
Die Variante, die ich oben verwendet habe...
[/OT]
Grüße
Biber
wenn ich die Aufgabenstellung richtig lese (...in der erstellten Datei soll stehen...),
dann würde ich noch einen SORT reinbringen und es am CMD-Prompt so abfeuern:
>Set q=QuellListe.txt
>Set z=ZielListe.txt
>echo\>nul 2>%z%
>for /f "delims=" %i in ('sort %Q%') do @find "%i" "%Z%">nul || @echo %i>>%z%
(=20:35:10 D:\temp=)
>type %z%
Opel Astra Caravan (1,6)
Opel Astra Caravan (2,0)
Opel Astra Caravan (2,0) S [##bastla's Sonderfall##]
Opel Astra Wimbledon (1,6)
[OT, aber doch ganz passend hier]
Ein neuer M$-CMD-Bug tritt neuerdings (seit irgendeinem KB-Update??) auf, zumindest auf XP-Rechnern:
Ein "echo." funktioniert nicht mehr zum Leerzeilen-Ausgeben.
>echo.>%z%
Der Befehl "echo." ist entweder falsch geschrieben oder
konnte nicht gefunden werden.
Die Variante, die ich oben verwendet habe...
echo\>nul 2>%z%
...schreibt auch tatsächlich eine 0-Byte-Datei statt eine 2-Byte-Datei mit CRLF.[/OT]
Grüße
Biber
@Biber
Auch wenn ich aus dem dargestellten Beispiel die Anforderung "Sortierung" nicht unmittelbar entnehmen kann, ist die Verwendung von "sort" eine elegante Möglichkeit, den "Sonderfall" zu berücksichtigen - die kürzeren (und damit in einer anderen Zeile möglicherweise enthaltenen) Zeilen werden zuerst verarbeitet.
Alternativ wäre man/frau mit "findstr /x" (besser, als in meinem Ansatz oben mit "/b /e") nicht auf die richtige Reihenfolge angewiesen ...
Grüße
bastla
Auch wenn ich aus dem dargestellten Beispiel die Anforderung "Sortierung" nicht unmittelbar entnehmen kann, ist die Verwendung von "sort" eine elegante Möglichkeit, den "Sonderfall" zu berücksichtigen - die kürzeren (und damit in einer anderen Zeile möglicherweise enthaltenen) Zeilen werden zuerst verarbeitet.
Alternativ wäre man/frau mit "findstr /x" (besser, als in meinem Ansatz oben mit "/b /e") nicht auf die richtige Reihenfolge angewiesen ...
Ein neuer M$-CMD-Bug ...
Den kannte ich noch nicht - damit werden sicher viele ihre Freude haben ...Grüße
bastla
Moin bastla,
...seitenweise 'Der Befehl "echo." ist entweder falsch geschrieben...'
Okay, für den Fall oben (leere Zieldatei erzeugen) könnten wir vielleicht ein schlichtes "Type nul>%z%" verwenden,
statt uns mit so so überkandidelten ECHO-Varianten rumzubalgen.
Aber einen ECHO-Bug habe ich noch... zu dem bei Chattern und auch hier im Forum so beliebten Doppel-Caret ("")
Try this...
<code(= 9:29:21 D:\temp=)
(= 9:30:06 D:\temp=)
(= 9:30:27 D:\temp=)
(= 9:30:41 D:\temp=)
Na ja, M$ und seine PraktikantInnen....
Grüße
Biber
@malleetje
BTW, von diesen Anekdoten abgesehen: war ein Lösungsansatz für Dich dabei?
Den kannte ich noch nicht - damit werden sicher viele ihre Freude haben ...
Oh ja, ich kann diesen Bug jeden Morgen beim Ausführen der Logon-Skripte bewundern......seitenweise 'Der Befehl "echo." ist entweder falsch geschrieben...'
Okay, für den Fall oben (leere Zieldatei erzeugen) könnten wir vielleicht ein schlichtes "Type nul>%z%" verwenden,
statt uns mit so so überkandidelten ECHO-Varianten rumzubalgen.
Aber einen ECHO-Bug habe ich noch... zu dem bei Chattern und auch hier im Forum so beliebten Doppel-Caret ("")
Try this...
<code(= 9:29:21 D:\temp=)
echoworks as planned
works as planned(= 9:30:06 D:\temp=)
echo ^ works as designed
works as designed(= 9:30:27 D:\temp=)
echo "works as planned"
"works as planned"(= 9:30:41 D:\temp=)
call echo "works as designed"
"^^ works as designed"Na ja, M$ und seine PraktikantInnen....
Grüße
Biber
@malleetje
BTW, von diesen Anekdoten abgesehen: war ein Lösungsansatz für Dich dabei?
Moin malleetje,
danke für die Rückmeldung.
Zu Deiner Ach-da-fällt-mir-noch-was-ein-Frage:
Du kann die Bildschirm- und Fehlerausgaben aller CMD-Befehle umleiten.
Wenn nur Erfolgsmeldungen unterdrückt werden, aber Fehlerinfos erscheinen sollen:
Grüße
Biber
danke für die Rückmeldung.
bin noch nichtso vertraut mit dem Forum
Um etwas vertrauter mit diesem Forum zu werden, setze doch bitte diesen Beitrag auf "Gelöst" (anmelden, Beitrag editieren, Häkchen setzen). *ggZu Deiner Ach-da-fällt-mir-noch-was-ein-Frage:
Du kann die Bildschirm- und Fehlerausgaben aller CMD-Befehle umleiten.
taskkill /IM whatever.exe >nul 2>&1
würde sowohl Bildschirmmeldungen wie auch Fehlernachrichten unterdrücken.Wenn nur Erfolgsmeldungen unterdrückt werden, aber Fehlerinfos erscheinen sollen:
taskkill /IM whatever.exe >nul
Grüße
Biber
Hallo malleetje!
bzw auch Wie kann ich einen Beitrag als gelöst markieren?
Grüße
bastla
P.S.: Da die Darstellung der Kommentare hier recht übersichtlich ist, genügt es zumeist, nur kurze (und vor allem relevante) Teile vorhergehender Posts zu zitieren ...
Wenn ich jetzt noch das Häckchen für "Gelöst" finden würde...
Wie schon bei Biber zu lesen:... anmelden, Beitrag editieren, Häkchen setzen
Grüße
bastla
P.S.: Da die Darstellung der Kommentare hier recht übersichtlich ist, genügt es zumeist, nur kurze (und vor allem relevante) Teile vorhergehender Posts zu zitieren ...