Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

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

.txt Dateien auf Duplikate überprüfen und diese löschen

Frage Entwicklung IDE & Editoren

Mitglied: DaSilva

DaSilva (Level 1) - Jetzt verbinden

23.01.2009, aktualisiert 11:56 Uhr, 9212 Aufrufe, 7 Kommentare

Ich möchte mehrere Textdateien zu einer großen zusammenfügen und diese Datei dann auf Duplikate überprüfen.
Das Zusammenfügen klappt gut, das Überprüfen auf Duplikate nicht so.
Mit UltraEdit kann man zwar gut Duplikate löschen lassen, allerdings nicht nur aufgrund der ersten Spalten.
Beispiel:

Eintrag1 blub
Eintrag1
Eintrag1

Ergebnis:


Eintrag1 blub
Eintrag1

Es soll aber so aussehen:

Eintrag1

Es sollen also nur die Zeichen bis Spalte x überprüft werden und davon dann alle Duplikate gelöscht werden.
Hat jemand eine Idee wie das geht?
Danke.
Mitglied: NetWolf
23.01.2009 um 13:00 Uhr
Hallo,

wenn man wüste, warum das so gemacht werden soll, würde ich empfehlen, vorher den Inhalt der Dateien auf Dubletten zu prüfen.


Grüße aus Schönberg (Lübeck)
Wolfgang
(Netwolf)
Bitte warten ..
Mitglied: DaSilva
23.01.2009 um 13:18 Uhr
Jede einzelne Datei hat als Inhalt nur einzigartige Einträge.
Es handelt sich um regelmäßige Reports und da werden beim nächsten Report noch sehr viele Einträge vom vorherigen übernommen, da nicht geändert im Status.
Ich brauche jetzt eine Zusammenfassung aller bisherigen Reports in einer Datei ohne Duplikate und dabei sind mir nur die Einträge bis Spalte 20 wichtig.
Deswegen kann ich an der Ausgangssituation leider nichts ändern...
Bitte warten ..
Mitglied: NetWolf
23.01.2009 um 14:30 Uhr
ich würde die Dateien in eine Datenbank (z.B. Access oder Base) einlesen, auswerten, fertig


Grüße aus Schönberg (Lübeck)
Wolfgang
(Netwolf)
Bitte warten ..
Mitglied: bastla
23.01.2009 um 16:29 Uhr
Hallo DaSilva!

Soferne es nicht stört, dass im Ergebnis keine Leerzeilen enthalten sein werden, müsste folgender Batch genügen:
01.
@echo off & setlocal 
02.
set "Datei=D:\Report.txt" 
03.
set "Bak=.bak" 
04.
 
05.
move "%Datei%" "%Datei%%Bak%" 
06.
copy nul "%Datei%">nul 
07.
for /f "usebackq delims=" %%i in ("%Datei%%Bak%") do set "Zeile=%%i" & call :ProcessLine 
08.
del "%Datei%%Bak%" 
09.
goto :eof 
10.
 
11.
:ProcessLine 
12.
findstr /b /c:"%Zeile:~,20%" "%Datei%">nul || >>"%Datei%" echo %Zeile% 
13.
goto :eof 
Falls Du die Originalversion als Sicherung behalten möchtest (wird dann beim nächsten Batchlauf durch die dann aktuelle Datei überschrieben), die Zeile 8 durch das Voranstellen von "::" auskommentieren ...

Grüße
bastla
Bitte warten ..
Mitglied: DaSilva
23.01.2009 um 16:54 Uhr
Danke, scheint zu funktionieren. Leerzeichen bleiben auch drin.
Braucht zum Ende hin (von der Dateigröße her gesehen) ziemlich lange.
Kann man noch einen Status (etwa "processing line 342...") einbauen?
Bitte warten ..
Mitglied: bastla
23.01.2009 um 17:07 Uhr
Hallo DaSilva!

Wie schon erwähnt werden Leerzeilen übersprungen, alle anderen Zeilen werden allerdings gezählt:
01.
@echo off & setlocal 
02.
set "Datei=D:\Report.txt" 
03.
set "Bak=.bak" 
04.
set /a LineNo=0 
05.
 
06.
move "%Datei%" "%Datei%%Bak%" 
07.
copy nul "%Datei%">nul 
08.
for /f "usebackq delims=" %%i in ("%Datei%%Bak%") do set "Zeile=%%i" & call :ProcessLine 
09.
del "%Datei%%Bak%" 
10.
goto :eof 
11.
 
12.
:ProcessLine 
13.
set /a LineNo+=1 
14.
echo processing Line %LineNo% 
15.
findstr /b /c:"%Zeile:~,20%" "%Datei%">nul || >>"%Datei%" echo %Zeile% 
16.
goto :eof 
Dass es gegen Ende zäh wird liegt einfach daran, dass jede Zeile, bevor sie in die Ergebnisdatei geschrieben wird, zunächst in dieser Datei gesucht wird - wird sie nicht gefunden (was aber erst feststeht, wenn die gesamte Datei durchsucht wurde), kann sie geschrieben werden ...

Wären die Zeilen sortiert, müsste jede gelesene Zeile immer nur mit der letzten geschriebenen Zeile verglichen werden, was eine kürzere Laufzeit ermöglichen sollte, aber hier wohl nicht möglich sein dürfte ...

Grüße
bastla
Bitte warten ..
Mitglied: DaSilva
23.01.2009 um 23:05 Uhr
Super, danke

Wie soll ich bloß die restlichen Zeichen füllen?
Ah, geschafft ;)
Bitte warten ..
Ähnliche Inhalte
Windows Server
gelöst Windows 2012R2 kann Datei nicht löschen (2)

Frage von Akcent zum Thema Windows Server ...

Batch & Shell
gelöst Merkwürdige Zeilenformatierung in txt Datei (3)

Frage von miczar zum Thema Batch & Shell ...

Neue Wissensbeiträge
Sicherheit

Millionen Euro in den Sand gesetzt?

(3)

Information von transocean zum Thema Sicherheit ...

Sicherheit

How I hacked hundreds of companies through their helpdesk

Information von SeaStorm zum Thema Sicherheit ...

Heiß diskutierte Inhalte
LAN, WAN, Wireless
Eine Netzwerkdose im Wechsel für zwei unterschiedliche Netze (12)

Frage von kartoffelesser zum Thema LAN, WAN, Wireless ...

Netzwerke
Mobile Einwahl IPSec VPN von iPhone iPad T-Mobile zur Pfsense (12)

Frage von Spitzbube zum Thema Netzwerke ...

Voice over IP
SNOM D765 an LancomR883VAW (10)

Frage von MS6800 zum Thema Voice over IP ...

Windows Netzwerk
Ordner-Freigabe außerhalb der Domäne (9)

Frage von Remsboys zum Thema Windows Netzwerk ...