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
Kommentar vom Moderator Biber am 16.04.2010 um 18:04:57 Uhr
Titel "Kann man das Problem mit einer Batchdatei lösen?" ersetzt.

Frage Entwicklung Batch & Shell

Kann man das Filtern von Duplikaten in großen Textdateien mit einer Batchdatei lösen?

Mitglied: SebastianJu

SebastianJu (Level 1) - Jetzt verbinden

15.04.2010, aktualisiert 16.04.2010, 2589 Aufrufe, 2 Kommentare

Hallo,

ich weiß nicht ob man das mit einer Batchdatei lösen könnte deshalb frage ich hier mal. Ansonsten müsste ich mir überlegen wie ich das per PHP machen könnte.

Ich habe einmal eine Textdatei mit Domainnamen. Also domain1.com usw. Jede Zeile eine neue domain. Ohne Subdomains. 21383 Domains um genau zu sein.

Dann habe ich eine Reihe von anderen Textdateien bei denen die Domainnamen aus der ersten Datei in der URL vorkommen. ZB http://ichbineinedomain.de/?test=http://www.domain1.com

Die domains aus der ersten Datei können dabei irgendwo in den URLs vorkommen.

Diese URLs sind in 7 verschiedenen Dateien. Jede enthält knapp 1Mio URLs. Es werden auch einige doppelt sein aber ich weiß nicht wie ich die entdoppeln könnte. Ich habe versucht das mit Notepad++ zu machen aber der gibt auf mangels RAM.

Aber das sollte auch kein so großes Problem sein denn die URLs werden am Ende ohnehin weniger sein. Denn die Domains aus der ersten Datei sollen in allen URLs aus den anderen Dateien ersetzt werden. Durch einen Platzhalter. ZB [URL]

Und dadurch würden viele der URLs plötzlich doppelt sein da ja die Domains ersetzt wurden.

Wenn das Ganze danach gefiltert würde so dass nur noch eine gleiche URL übrigbleibt dann wären es nicht mehr viele.

Jetzt die Frage ob man dieses ersetzen der Domains mit [URL] in den URLs mit einer Batch machen kann. Denn es müsste ja eigentlich schon fast ein regulärer Ausdruck benutzt werden damit nicht zB in der URL http://ichbineinedomain.de/?test=http://www.domain1.com auf die Domain n1.com getestet würde und dann die URL kaputtgemacht wird.

Also müsste irgendein Ausdruck wie [^0-9a-zA-Z-][0-9a-zA-Z-]*\.[a-zA-Z]* benutzt werden. Wobei ich grad nicht weiß wie man festlegen könnte dass die Domain nach der tld enden können oder aber auch ein Nichtbuchstabe kommen kann. Damit sollten die Domains korrekt ausgefüllt werden.

Geht sowas? Wenn ja mit welchen Funktionen? Tips?
Mitglied: SebastianJu
16.04.2010 um 04:56 Uhr
Ich wollte jetzt erstmal versuchen die ganzen Dateien zusammenzufassen und doppelte Zeilen zu entfernen. Dazu habe ich diesen Code benutzt:

01.
@echo off & setlocal  
02.
set "DateiNeu=333Neu.txt"  
03.
  
04.
copy nul "%DateiNeu%">nul 
05.
 
06.
set "DateiAlt=333.txt"  
07.
set /a LineNo=0  
08.
for /f "usebackq" %%i in ("%DateiAlt%") do set "Zeile=%%i" & call :ProcessLine  
09.
 
10.
set "DateiAlt=333-1.txt"  
11.
set /a LineNo=0  
12.
for /f "usebackq" %%i in ("%DateiAlt%") do set "Zeile=%%i" & call :ProcessLine  
13.
 
14.
set "DateiAlt=333-2.txt"  
15.
set /a LineNo=0  
16.
for /f "usebackq" %%i in ("%DateiAlt%") do set "Zeile=%%i" & call :ProcessLine  
17.
 
18.
set "DateiAlt=333-3.txt"  
19.
set /a LineNo=0  
20.
for /f "usebackq" %%i in ("%DateiAlt%") do set "Zeile=%%i" & call :ProcessLine  
21.
 
22.
set "DateiAlt=336.txt"  
23.
set /a LineNo=0  
24.
for /f "usebackq" %%i in ("%DateiAlt%") do set "Zeile=%%i" & call :ProcessLine  
25.
 
26.
set "DateiAlt=337.txt"  
27.
set /a LineNo=0  
28.
for /f "usebackq" %%i in ("%DateiAlt%") do set "Zeile=%%i" & call :ProcessLine  
29.
 
30.
set "DateiAlt=338.txt"  
31.
set /a LineNo=0  
32.
for /f "usebackq" %%i in ("%DateiAlt%") do set "Zeile=%%i" & call :ProcessLine  
33.
 
34.
goto :eof  
35.
  
36.
:ProcessLine  
37.
set /a LineNo+=1  
38.
echo Validiere Zeile %LineNo% ...  
39.
findstr /b /c:"%Zeile%" "%DateiNeu%">nul || >>"%DateiNeu%" echo %Zeile%  
40.
goto :eof
Allerdings hat das einige Fehlermeldungen hervorgerufen. Ich glaube aus irgendeinem Grund versucht der die URLs als Befehle zu interpretieren. Zumindest hat er mit dem Zeichen & in den URLs Probleme. Die URL ist da abgeschnitten und er meint irgendwelche Befehle nicht zu erkennen. Ich dachte er liest und schreibt nur Strings?
Aber was ich auch noch gemerkt habe ist dass das Ganze sehr langsam ist. Liegt das nur an der Statusausgabe? Wenn nein dann ist das ja tausendmal langsamer als Notepad++ wäre. Und ich frage mich ob das Ganze überhaupt in einem überschaubaren Zeitrahmen ein Ende finden würde. Schließlich sind es einige Millionen URLs und die DateiNeu war ja noch klein. Das Ganze würde also später noch langsamer werden.
Bitte warten ..
Mitglied: pieh-ejdsch
29.05.2010 um 00:40 Uhr
Hallo Sebastian,

wenn in den Dateien mit der URL vor dem Gleichheitszeichen und folgender Domain kein weiteres = enthalten ist
und wenn die Domain vorher einen Punkt hat sollte es so gehen.

01.
@echo off & setlocal 
02.
set "NewFile=333Neu.txt" 
03.
set "DomainFile="Main.txt"" 
04.
set "URLFiles="1.txt" "2.txt" "3.txt"" 
05.
type nul>%NewFile% 
06.
for /f "usebackq tokens=*" %%i in (%DomainFile%) do set "Domain=%%i"& call :URL 
07.
echo Fertig!&pause>nul&goto :eof 
08.
:URL 
09.
for /f "usebackq tokens=1,2 delims==" %%i in (%URLFiles%) do for /f "tokens=1* delims=." %%k in ("%%j") do if "%%l"=="%Domain%" echo %%i [URL]>>%NewFile%& goto :eof
in der Subroutine :URL wird nur solange nach der Domain gesucht bis sie gefunden wird, anschliesend angezeigt und sofort aus der Subroutine :URL gegangen (es wäre sinnlos noch weiter nach dieser Domain zu suchen wenn diese schon einmal gefunden worden ist.)
wenns nicht gefunden wird erfolgt auch kein Eintrag.

DomainFile sowie URLFiles bitte noch anpassen. Achtung! Die Anführungszeichen Beim SET pro Datei Drummachen und gesamt auch.

Gruß Phil
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Filtern von Textdatei
gelöst Frage von MaxPauerBatch & Shell2 Kommentare

Hallo Zusammen, ich hätte ein Problem bei welchem ihr mir hoffendlich helfen könnt. Ich ich will eine Liste erstellen ...

Batch & Shell
Powershell Filtern Filtern Filtern
gelöst Frage von H41mSh1C0RBatch & Shell10 Kommentare

Aloa in die Runde, ich brech mir gerade wieder etwas die Finger ^^ am Freitag. DataTable einmal durchlaufen und ...

Webbrowser
Was ist mit Firefox los?
gelöst Frage von honeybeeWebbrowser2 Kommentare

Hallo, jedes Mal, wenn ich Firefox starte, meckert der Kaspersky ständig mit dieser u. g. Meldung Ich hatte keine ...

Windows 7
Ordnerstrukturen vergleichen und Duplikate löschen
gelöst Frage von SarekHLWindows 71 Kommentar

Hallo zusammen, kennt jemand ein Programm, um zwei Ordnerstrukturen zu vergleichen und aus einer der beiden alle nach Name, ...

Neue Wissensbeiträge
Linux

Meltdown und Spectre: Linux Update

Information von Frank vor 20 StundenLinux

Meltdown (Variante 3 des Prozessorfehlers) Der Kernel 4.14.13 mit den Page-Table-Isolation-Code (PTI) ist nun für Fedora freigegeben worden. Er ...

Tipps & Tricks

Solutio Charly Updater Fehlermeldung: Das Abgleichen der Dateien in -Pfad- mit dem Datenobject ist fehlgeschlagen

Tipp von StefanKittel vor 1 TagTipps & Tricks

Hallo, hier einmal als Tipp für alle unter Euch die mit der Zahnarztabrechnungssoftware Charly von Solutio zu tun haben. ...

Sicherheit

Meltdown und Spectre: Wir brauchen eine "Abwrackprämie", die die CPU-Hersteller bezahlen

Information von Frank vor 1 TagSicherheit12 Kommentare

Zum aktuellen Thema Meltdown und Spectre: Ich wünsche mir von den CPU-Herstellern wie Intel, AMD oder ARM eine Art ...

Sicherheit

Meltdown und Spectre: Realitätscheck

Information von Frank vor 1 TagSicherheit9 Kommentare

Die unangenehme Realität Der Prozessorfehler mit seinen Varianten Meltdown und Spectre ist seit Juni 2017 bekannt. Trotzdem sind immer ...

Heiß diskutierte Inhalte
Sicherheit
Meltdown und Spectre: Die machen uns alle was vor
Information von FrankSicherheit25 Kommentare

Aktuell sieht es in den Medien so aus, als hätten die Hersteller wie Intel, Microsoft und Co den aktuellen ...

Netzwerke
Packet loss bei "InternetLeitungsvollauslastung"
gelöst Frage von Freak-On-SiliconNetzwerke17 Kommentare

Servus; Ja der Titel klingt komisch, is aber so. Wenn die Internetleitung voll ausgelastet ist, hab ich extreme packet ...

Ubuntu
Ubuntu - Starter für nicht vertrauenswürdige Anwendungen
Frage von adm2015Ubuntu17 Kommentare

Hallo zusammen, Ich verwende derzeit die Ubuntu Versionen 17.10 bzw. im Test 18.04. Ich habe mehrere .desktop Dateien in ...

Windows 10
Automatische daten kopieren, USB zu USB unter Win10 im Hintergrund
Frage von DerEisigeWindows 1016 Kommentare

Hallo Leute, ich bin auf der Suche nach einem Skript, dass von einem USB Stick automatisch nach dem einstecken ...