Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

gelöst Doppelte Einträge in einer TXT in andere Datei ausfiltern

Mitglied: smileyman

smileyman (Level 1) - Jetzt verbinden

24.05.2010, aktualisiert 22:37 Uhr, 5847 Aufrufe, 6 Kommentare

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
Mitglied: bastla
24.05.2010 um 23:17 Uhr
Hallo smileyman!

Versuch es mal so:
01.
@echo off & setlocal 
02.
set "Liste=D:\Tel-Liste.txt" 
03.
set "Ergebnis=D:\Dubletten.txt" 
04.
 
05.
copy nul "%Ergebnis%">nul 
06.
set "First=True" 
07.
for /f "usebackq tokens=2 delims=," %%i in ("%Liste%") do ( 
08.
    findstr /c:"%%i," "%Ergebnis%">nul||( 
09.
        for /f %%a in ('find /c "%%i,"^<"%Liste%"') do if %%a gtr 1 ( 
10.
            if not defined First >>"%Ergebnis%" echo --- 
11.
            set "First=" 
12.
            findstr /c:"%%i," "%Liste%">>"%Ergebnis%" 
13.
14.
15.
)
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
Bitte warten ..
Mitglied: LotPings
25.05.2010 um 08:51 Uhr
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
Bitte warten ..
Mitglied: bastla
25.05.2010 um 11:36 Uhr
Hallo LotPings!
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
Bitte warten ..
Mitglied: smileyman
25.05.2010 um 22:44 Uhr
Hallo Bastla,

\'bravo\' - ja, das ist hier das zutreffende Wort.

Habe eben mal versucht, dein Script nachzuvollziehen - Es hat bei mir einige Zeit gedauert, aber jetzt habe ich es zumindest einigermaßen begriffen.
Einzig die copy-Zeile habe ich rausgenommen, damit im Falle des Falles gar keine Datei entsteht. So kann ich später prüfen, ob ein Dubletten-File vorhanden ist und dieses ggf. via Blat per Mail versenden.

Achso, wegen der Nummern: Keine Sorge, die sind wirklich so einheitlich formatiert: Es handelt sich hier um LDAP-Einträge für einen Faxserver. Da der Faxserver jedoch Probleme mit einer doppelten Vergabe hat und das Fax dann gar nicht zustellt, versuche ich das jetzt so abzucanceln: Regelmäßiger LDAP-Export, dein Script drüberjagen, bei vorhandener Dubletten.txt diese an den Administrator mailen und um Bereinigung bitten. OK, klar man könnte hier jetzt noch versuchen Fehleingaben abzufangen und diese mit auszugeben, aber das wäre wohl schon die Profilösung.
Ich glaube ich muss doch wieder mehr mit Batch machen. - Wenn man dir so zuschaut, macht das einfach Spaß

Danke für deine Unterstützung.

smileyman
Bitte warten ..
Mitglied: bastla
25.05.2010 um 23:04 Uhr
Hallo smileyman!

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 Art
FINDSTR: D:\Dubletten.txt kann nicht geöffnet werden.
- das ist halt nicht soo schön ...
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%"
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ß.
Bitte warten ..
Mitglied: smileyman
25.05.2010 um 23:38 Uhr
Hallo Bastla,

Zitat von bastla:
Danke für die Blumen ...

die du dir redlich verdient hast

... und sorry wegen der "spärlichen" Kommentierung.

Ne, ne - passt schon. - Ich hätte mich da ja auch dank google und co tiefer reingraben können.

das Ergebnis eine Meldung der Art
FINDSTR: D:\Dubletten.txt kann nicht geöffnet werden. 
> 
- das ist halt nicht soo schön ...

Hast recht, hatte ich so nicht beachtet. - Habe es eben wieder angepasst und diesen Fall mit der Zeilenabfrage abgefangen.

Was die Fehleingaben anlangt - was wäre denn da so zu berücksichtigen?

Fehleingaben wären grundsätzlich, wenn die Faxnummer leer ist bzw. nicht dem Format +49 123 4567 3xx(x) entspricht.
Bedeutet im Endefekt, der Teil "+49 123 4567 3" ist in jeder Zeile identisch.
Die letzten Ziffern "xxx(x) können 3 oder vierstellig sein.
Es dürfen nicht mehr Zeichen sein.
- EDIT: Ah, eines vergessen, es müsste eine Ausnahmedatei geben, die doppelte oder wiedersprüchliche Einträge zulässt.

Im Endeffekt müsste ich wohl mit for / if den Anfang Prüfen, ob dieser vorhanden ist und mit "+49 123 4567 3" Zeichengenau übereinstimmt.
Weiterhin müsste ich dann prüfen, ob nach dieser Zeichenfolge genau 3 oder 4 Ziffern (keine Buchstaben oder sonstiges) stehen.
Das sollte eigentlich alles gewesen sein?! - Ausnahmedatei, hmm? - Zeilen wieder aus der Ergebnis.txt löschen?

Die erste Bedingung sollte ich ja noch hinbringen. - Bei den weiteren, hmm?

Danke
smileyman
Bitte warten ..
Ähnliche Inhalte
Batch & Shell

Dateien zusammenführen inkl. finden von doppelten Einträgen

gelöst Frage von miczarBatch & Shell3 Kommentare

Hallo zusammen, Ich habe im Netzwerk eine Master Datei (aufgebaut wie eine .txt) und mehrere PCs auf denen eine ...

Batch & Shell

Doppelte Einträge mit Batch entfernen

gelöst Frage von Kugelschreiber15Batch & Shell8 Kommentare

Hallo Leute, bin grad dabei ein kleines Tool zu basteln und habe nun eine Frage! Ich suche mit Hilfe ...

Windows Userverwaltung

Mit Powershell doppelte Einträge aussortieren

gelöst Frage von arduinoWindows Userverwaltung2 Kommentare

Hallo Folgendes Szenario (via Powershell): Das Ziel ist es, dem ADUser (Spalte 1) das entsprechende Datum zu setzen. Das ...

Windows Netzwerk

Doppelte DNS-Einträge

Frage von malikaWindows Netzwerk6 Kommentare

Hallo, ich habe heute im DNS-Manager doppelten Einträge in den Reverse-Lookupzonen entdeckt: 192.168.2.108 Zeiger (PTR) pc-001.firma.local 27.10.2014 07:00:00 192.168.2.109 ...

Neue Wissensbeiträge
Sicherheit
Sicherheitsrisiko: Die Krux mit 7-Zip
Information von kgborn vor 5 StundenSicherheit

Bei vielen Anwendern ist das Tool 7-Zip zum Entpacken von Archivdateien im Einsatz. Die Software ist kostenlos und steht ...

Internet

Datendealing im WWW Tracking Methoden immer brutaler

Information von sabines vor 14 StundenInternet

Interessanter Artikel zum Thema Tracking im WWW und die immer "besseren" Methoden des Trackings. Professor Arvind Narayanan (Princeton-Universität) betreibt ...

Erkennung und -Abwehr

Ups: Einfaches Nullzeichen hebelte den Anti-Malware-Schutzt in Windows 10 aus

Information von kgborn vor 1 TagErkennung und -Abwehr

Windows 10 ist das sicherste Windows aller Zeiten, wie Microsoft betont. Insidern ist aber klar, das es da Lücken, ...

Windows 10

Windows 10 on ARM: von Microsoft entfernte Info - Klartext, was nicht geht

Information von kgborn vor 1 TagWindows 10

Windows 10 on ARM ist ja eine neue Variante, die Microsoft im Verbund mit Geräteherstellern am Markt etablieren will. ...

Heiß diskutierte Inhalte
Server
Route-Befehl Unterstützung (unter CMD)
gelöst Frage von FKRR56Server36 Kommentare

Guten Tag , i.M. habe ich Probleme über den CMD-Route-Befehl ein Routing auf einen entfernten Server zuzulassen. Der Server ...

Windows 10
Windows 10 (1709) Tastur und Maus wieder einschalten?
Frage von LochkartenstanzerWindows 1028 Kommentare

Moin, Ich habe von einem Kunden einen Win10-Rechner bekommen, bei dem weder Tastatur noch Maus geht. Die Hardware funktioniert ...

Microsoft
TV-Tipp: Das Microsoft-Dilemma
Information von kgbornMicrosoft17 Kommentare

Aktuell gibt es in Behörden und in Firmen eine fatale Abhängigkeit von Microsoft und dessen Produkten. Planlos agieren die ...

Webbrowser
Welcher Browser ist der Beste?
Frage von justtinWebbrowser15 Kommentare

Hallo Leute Ich habe eine interessante Frage. Mich wurde mal interessieren welcher Browser ist eure meinung nach der beste? ...