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

Frage Entwicklung Batch & Shell

Mitglied: smileyman

smileyman (Level 1) - Jetzt verbinden

24.05.2010, aktualisiert 22:37 Uhr, 5841 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
Netzwerkmanagement
DHCP und GUID doppelte Einträge
gelöst Frage von Chrigi83Netzwerkmanagement7 Kommentare

hallo zusammen Hab folgendes Problem. Wir haben im Geschäft 50 neue PC's angeschafft. Nun wollte ich die MAC Adresse ...

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 ...

Neue Wissensbeiträge
Viren und Trojaner

Deaktivierter Keylogger in HP Notebooks entdeckt

Information von bitcoin vor 21 StundenViren und Trojaner1 Kommentar

Ein Grund mehr warum man Vorinstallationen der Hersteller immer blank bügeln sollte Der deaktivierte Keylogger findet sich im vorinstallierten ...

Router & Routing

Lets Encrypt kommt auf die FritzBox

Information von bitcoin vor 1 TagRouter & Routing

In der neuesten Labor-Version der FB7490 integriert AVM unter anderem einen Let's Encrypt Client für Zugriffe auf das Webinterface ...

Internet

Was nützt HTTPS, wenn es auch von Phishing Web-Seiten genutzt wird

Information von Penny.Cilin vor 4 TagenInternet17 Kommentare

HTTPS richtig einschätzen Ob man eine Webseite via HTTPS aufruft, zeigt ein Schloss neben der Adresse im Webbrowser an. ...

Webbrowser

Bugfix für Firefox Quantum released - Installation erfolgt teilweise nicht automatisch!

Erfahrungsbericht von Volchy vor 5 TagenWebbrowser8 Kommentare

Hallo zusammen, gem. dem Artike von heise online wurde mit VersionFirefox 57.0.1 sicherheitsrelevante Bugs behoben. Entgegen der aktuellen Veröffentlichung ...

Heiß diskutierte Inhalte
Batch & Shell
Trusted Sites für alle User auf dem PC einpflegen
Frage von xXTaKuZaXxBatch & Shell12 Kommentare

Aufgabestellung: Es sollen auf 1 PC (bzw. mehreren PCs) vertrauenswürdige Sites per Powershell eingetragen werden, die für alle User ...

Windows 10
Probleme mit Dateien, deren Pfad + Dateiname länger als 256 Zeichen sind
Frage von FalaffelWindows 1011 Kommentare

Guten Tag, unter Windows 10 scheint es immer noch das Problem zu geben, dass der Pfad + Dateiname einer ...

Vmware
DOS 6.22 in VMWare mit CD-ROM
gelöst Frage von hesperVmware10 Kommentare

Hallo zusammen! Ich hab ein saublödes Problem. Es ist eine VMWare mit DOS 6.22 zu erstellen auf dem ein ...

Microsoft Office
Outlook 2016 - Makro startet nicht über Knopf im Menüband
Frage von ZunarasMicrosoft Office9 Kommentare

Schönen guten Tag! ich brauche wieder einmal Hilfe. Ich möchte gerne von Office 2010 32bit auf 2016 64bit wechseln ...