Kann man das Filtern von Duplikaten in großen Textdateien mit einer Batchdatei lösen?
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?
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?
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Kommentar vom Moderator Biber am 16.04.2010 um 18:04:57 Uhr
Titel "Kann man das Problem mit einer Batchdatei lösen?" ersetzt.
Content-ID: 140777
Url: https://administrator.de/forum/kann-man-das-filtern-von-duplikaten-in-grossen-textdateien-mit-einer-batchdatei-loesen-140777.html
Ausgedruckt am: 23.12.2024 um 08:12 Uhr
2 Kommentare
Neuester Kommentar
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.
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
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.
@echo off & setlocal
set "NewFile=333Neu.txt"
set "DomainFile="Main.txt""
set "URLFiles="1.txt" "2.txt" "3.txt""
type nul>%NewFile%
for /f "usebackq tokens=*" %%i in (%DomainFile%) do set "Domain=%%i"& call :URL
echo Fertig!&pause>nul&goto :eof
:URL
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