Doppelte Einträge in einer TXT in andere Datei ausfiltern
Hallo Batch-Profis,
ich bräucht mal eure Unterstützung beim Filtern auf Dubletten in einem Text-File.
Ich habe ein TXT-File mit folgendem Muster:
Max Muster, +49 1234 4567, Teststraße 1, 12345 Teststadt
Martin User, +49 122 3342, Feldstraße 5, 55454 Dorf
Test User; +49 1234 6667; Teststraße 4, 12345 Teststadt
Ingo User, +49 1234 4567, Teststraße 1, 12345 Teststadt
Klaus User, +49 122 3342, Hauptstraße 3, 55454 Dorf
Max Benutzer, +49 122 3342, Dorfstrßae 2, 55454 Dorf
Als Ziel bräuchte ich ein File, dass nur die Zeilen enthält, deren Telefonnnummern mehrfach vorkommen:
Max Muster, +49 1234 4567, Teststraße 1, 12345 Teststadt
Ingo User, +49 1234 4567, Teststraße 1, 12345 Teststadt
---
Martin User, +49 122 3342, Feldstraße 5, 55454 Dorf
Klaus User, +49 122 3342, Hauptstraße 3, 55454 Dorf
Max Benutzer, +49 122 3342, Dorfstrßae 2, 55454 Dorf
Ich beiße mir daran gerade die Zähne aus. - Geschafft hätte ich es bereits, die Datei zu bereinigen, dass die doppelten Einträge rausfallen. Jetzt könne ich zwar die beiden Dateien vergleichen - aber es geht doch sicherlich optimaler? - Am optimalsten wäre eine Trennung (---) zwischen den doppelten Einträgen.
Für einen Tipp wäre ich euch sehr dankbar.
smileyman
ich bräucht mal eure Unterstützung beim Filtern auf Dubletten in einem Text-File.
Ich habe ein TXT-File mit folgendem Muster:
Max Muster, +49 1234 4567, Teststraße 1, 12345 Teststadt
Martin User, +49 122 3342, Feldstraße 5, 55454 Dorf
Test User; +49 1234 6667; Teststraße 4, 12345 Teststadt
Ingo User, +49 1234 4567, Teststraße 1, 12345 Teststadt
Klaus User, +49 122 3342, Hauptstraße 3, 55454 Dorf
Max Benutzer, +49 122 3342, Dorfstrßae 2, 55454 Dorf
Als Ziel bräuchte ich ein File, dass nur die Zeilen enthält, deren Telefonnnummern mehrfach vorkommen:
Max Muster, +49 1234 4567, Teststraße 1, 12345 Teststadt
Ingo User, +49 1234 4567, Teststraße 1, 12345 Teststadt
---
Martin User, +49 122 3342, Feldstraße 5, 55454 Dorf
Klaus User, +49 122 3342, Hauptstraße 3, 55454 Dorf
Max Benutzer, +49 122 3342, Dorfstrßae 2, 55454 Dorf
Ich beiße mir daran gerade die Zähne aus. - Geschafft hätte ich es bereits, die Datei zu bereinigen, dass die doppelten Einträge rausfallen. Jetzt könne ich zwar die beiden Dateien vergleichen - aber es geht doch sicherlich optimaler? - Am optimalsten wäre eine Trennung (---) zwischen den doppelten Einträgen.
Für einen Tipp wäre ich euch sehr dankbar.
smileyman
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 143446
Url: https://administrator.de/contentid/143446
Ausgedruckt am: 26.11.2024 um 05:11 Uhr
6 Kommentare
Neuester Kommentar
Hallo smileyman!
Versuch es mal so:
Anmerkung: Gesucht wird nach der Nummer und einem unmittelbar folgenden Komma (lt Beispiel) - damit soll vermieden werden, dass "+49 1234 4567" und "+49 1234 45678" als gleiche Nummern betrachtet werden.
Grüße
bastla
Versuch es mal so:
@echo off & setlocal
set "Liste=D:\Tel-Liste.txt"
set "Ergebnis=D:\Dubletten.txt"
copy nul "%Ergebnis%">nul
set "First=True"
for /f "usebackq tokens=2 delims=," %%i in ("%Liste%") do (
findstr /c:"%%i," "%Ergebnis%">nul||(
for /f %%a in ('find /c "%%i,"^<"%Liste%"') do if %%a gtr 1 (
if not defined First >>"%Ergebnis%" echo ---
set "First="
findstr /c:"%%i," "%Liste%">>"%Ergebnis%"
)
)
)
Grüße
bastla
Bravo bastla!
Ganz schön tricky, hat etwas gedauert den zu verstehen.
Hoffentlich sind die Nummern in ihrer Schreibweise auch identisch,
keine Klammern, Minus- oder Leerzeichen an unterschiedlichen Stellen.
Gruß
LotPings
Ganz schön tricky, hat etwas gedauert den zu verstehen.
Hoffentlich sind die Nummern in ihrer Schreibweise auch identisch,
keine Klammern, Minus- oder Leerzeichen an unterschiedlichen Stellen.
Gruß
LotPings
Hallo LotPings!
Grüße
bastla
Ganz schön tricky, hat etwas gedauert den zu verstehen.
Ich hab' ja auch keinen Platz für Kommentare verschwendet ... Hoffentlich sind die Nummern in ihrer Schreibweise auch identisch
Wäre anderenfalls ja auch keine vernünftige Grundlage für eine automatisierte Verarbeitung - aber schaun mer mal ...Grüße
bastla
Hallo smileyman!
Danke für die Blumen ...
... und sorry wegen der "spärlichen" Kommentierung.
- das ist halt nicht soo schön ...
Um im Fall des Falles eine leere Ergebnisdatei zu entsorgen, könntest auch Du am Ende
verwenden ...
Was die Fehleingaben anlangt - was wäre denn da so zu berücksichtigen?
Grüße
bastla
P.S.: Du hast übrigens recht - batchen macht Spaß.
Danke für die Blumen ...
... und sorry wegen der "spärlichen" Kommentierung.
Einzig die copy-Zeile habe ich rausgenommen, damit im Falle des Falles gar keine Datei entsteht.
Die hatte ich wegen des "findstr
" erstellt - es sollen ja nur Nummern verarbeitet werden, die noch nicht in der Ergebnisdatei stehen (siehe Zeile 8) - wenn es die Zieldatei (beim ersten Durchlauf) noch nicht gibt (und ein "2>nul
", bzw in diesem Fall "2>&1
", nicht verwendet wird), ist das Ergebnis eine Meldung der ArtFINDSTR: D:\Dubletten.txt kann nicht geöffnet werden.
Um im Fall des Falles eine leere Ergebnisdatei zu entsorgen, könntest auch Du am Ende
for %%i in ("%Ergebnis%") do if %%~zi==0 del "%Ergebnis%"
Was die Fehleingaben anlangt - was wäre denn da so zu berücksichtigen?
Grüße
bastla
P.S.: Du hast übrigens recht - batchen macht Spaß.