00ingo
Goto Top

Javascript um 2 txt dateien zu vergleichen

Ich möchte 2 Listen mit Mailadressen vergleichen und die Adressen die in beiden Listen vorkommen nicht mehr in einer dritten liste haben.
(also die Adressen die nicht gleich sind in eine neue Liste)
Ich hänge jetzt schon seit einer Woche fest und komme nicht voran...

Hallo ihr Klugen,

Ich würde gerne ein Script schreiben um 2 txt listen mit jeweils einer email-adresse pro Zeile zu vergleichen und den Unterschied der 2 Dateien in eine dritte txt Datei ausgeben.
Leider finde ich nirgends ein tutorial welches mir weiter hilft face-sad ...
Könnte mir hier vllt irgendwer helfen?

Content-Key: 142961

Url: https://administrator.de/contentid/142961

Printed on: April 24, 2024 at 16:04 o'clock

Member: Korrn
Korrn May 17, 2010 at 13:24:16 (UTC)
Goto Top
Hallo.

An was scheitert es denn? Findest Du keinen Ansatz für Deine Programmierlogik, oder fehlen Dir die entsprechenden Befehle?

Nebenbei: Unter Linux würde die beiden Listen durch sort jagen und die Ausgabe von diff in eine dritte Datei jagen...
Member: 00ingo
00ingo May 17, 2010 at 13:41:47 (UTC)
Goto Top
Nein ich finde keinen ansatz um das script zu schreiben...
Nirgends finde ich ein Tutorial um zwei txt Dateien zu vergleichen...
Mitglied: 77559
77559 May 17, 2010 at 13:43:52 (UTC)
Goto Top
Hallo,

wenn es nicht gerade eine Javascript Lernaufgabe ist,
und die Adressen bereits "normalisiert" sind, würde ich es auf Windosen auch über die Kommandozeile lösen

Findstr /i /V /G:Liste-A.txt Liste-B.txt >Fehlt-In-A.txt
Findstr /i /V /G:Liste-B.txt Liste-A.txt >Fehlt-In-B.txt

Gruß
LotPings
Member: bastla
bastla May 17, 2010 at 13:50:04 (UTC)
Goto Top
... und unter CMD sollte
findstr /v /x /g:Adressen1.txt Adressen2.txt>Adressen3.txt
findstr /v /x /g:Adressen2.txt Adressen1.txt>>Adressen3.txt
funktionieren ...

Ansonsten sollte sich das etwa so lösen lassen:
Die beiden Dateien zeilenweise in je ein Array einlesen und dann jedes Element des einen Arrays mit allen Elementen des anderen Arrays (bzw so lange, bis es im anderen Array gefunden wurde) vergleichen - anhand eines Schalters, der vorweg gesetzt und dann nur geändert wird, wenn das Element gefunden wurde, lässt sich nach dem Schleifendurchlauf feststellen, ob das gepürfte Element eine der gesuchten "einmaligen" Adressen und daher in die Adressliste3 zu schreiben ist.

Das gleiche dann nochmals mit vertauschten Rollen: die Elemente aus Liste2 mit jenen aus Liste1 vergleichen und diejenigen, die nicht in Liste1 enthalten sind, der Liste3 hinzufügen.

Grüße
bastla

[Edit] @77559: Hätte ich ja wissen können ... face-wink [/Edit]
Member: godlie
godlie May 17, 2010 at 14:15:36 (UTC)
Goto Top
Also mit Javascript wirst du da nicht glücklich werden, da es eig. keine File Operations unterstützt.
Member: 00ingo
00ingo May 17, 2010 at 14:33:39 (UTC)
Goto Top
Es muss nicht umbedingt Java sein, hauptsache es funktioniert überhaupt...
Wenn ich die Befehle eingebe sagt er: FINDSTR: Zeichenfolgen aus Liste-A.txt können nicht gelesen werden.
Woran liegt das?? Es sind nur normale Emailadressen jeweils eine pro zeile.

Vielen Dank schon mal für die schnellen Antworten
00Ingo
Mitglied: 77559
77559 May 17, 2010 at 14:45:14 (UTC)
Goto Top
Zitat von @00ingo:
Wenn ich die Befehle eingebe sagt er: FINDSTR: Zeichenfolgen aus Liste-A.txt können nicht gelesen werden.
Woran liegt das?? Es sind nur normale Emailadressen jeweils eine pro zeile.

Welche Variante hast du benutzt?
Und poste doch mal ein paar ggfs neutralisierte Zeilen.

Gruß
LotPings

PS: Bitte formatiere die Zeilen zur besseren Les-/Referenzier-barkeit mit den dafür vorgesehenen in der Formatierungshilfe
Member: 00ingo
00ingo May 17, 2010 at 14:57:37 (UTC)
Goto Top
Ich habe diese Variante benutzt und folgende Fehlermeldung bekommen.

Findstr /i /V /G:Liste-A.txt Liste-B.txt >Fehlt-In-A.txt

Findstr /i /V /G:Liste-B.txt Liste-A.txt >Fehlt-In-B.txt

Fehler: FINDSTR: Zeichenfolgen aus Liste-A.txt können nicht gelesen werden

leider muss ich jetzt zu dringenden Terminen kann also erst morgen weitere Versuche starten ...
Vielen Dank schon mal für alles
Gruß 00Ingo
Mitglied: 77559
77559 May 17, 2010 at 15:27:45 (UTC)
Goto Top
In was für einem Format sind die Textdateien gespeichert?
Evtl. nicht ASCII/ANSI ? Sondern Utf-8,Utf-16, sonstiges?

Gruß
LotPings
Member: 00ingo
00ingo May 18, 2010 at 07:42:00 (UTC)
Goto Top
Die txt Dateien sind im ASCII vormat gespeichert...

Gruß 00Ingo
Mitglied: 77559
77559 May 18, 2010 at 10:10:35 (UTC)
Goto Top
Kannst du die dateien ansehen mit :
more Liste-A.txt

Wenn das klappt, musst du den Inhalt exemplarisch erläutern.

Sonst kann man dir nicht helfen

Gruß
LotPings
Member: 00ingo
00ingo May 18, 2010 at 10:52:51 (UTC)
Goto Top
Nein es geht nicht face-sad
Ich gehe jetzt schnell zu meinem kollegen der ist Programierer und dann gib ich hier bescheid wenn das script funktioniert.

Gruß 00Ingo
Member: 00ingo
00ingo May 19, 2010 at 07:21:29 (UTC)
Goto Top
So jetzt habe ich ein java programm...

import java.io.*;

public class FilesCompare
{
public static void main (String args) throws Exception
{
FileReader fr1 = new FileReader("C:\\Liste\\Liste-A.txt");
LineNumberReader br1 = new LineNumberReader(fr1);


FileWriter writer = new FileWriter("C:\\Liste\\Liste-C.txt");

String s1;
do
{
s1 = br1.readLine();
if (s1 != null)
{

String s2;
FileReader fr2 = new FileReader("C:\\Liste\\Liste-B.txt");
LineNumberReader br2 = new LineNumberReader(fr2);
Boolean bFound = false;
do
{
s2 = br2.readLine();
if (s2 != null)
{
String sA = s1.trim();
String sB = s2.trim();
if (sA.compareToIgnoreCase(sB) == 0)
{
bFound = true;
}
}
} while (s2 != null);
br2.close();
if (bFound == false)
{
String sDiff = s1 + "\r\n";
writer.write(sDiff);
}
}

} while (s1 != null);
fr1.close();
writer.close();
System.out.println("Ready");
System.exit(0);
}
}

Trotzdem Danke für eure Beiträge.

Gruß 00Ingo
Mitglied: 77559
77559 May 19, 2010 at 07:47:48 (UTC)
Goto Top
Hallo 00Ingo,

es ist zwar schön, das du ein Feedback gibst, aber dem Code entnehme ich, das das Problem mit More und Findstr außerhalb liegen muß sonst hättest du es mit diesem Code ebenfalls.
Es ist daher etwas schäbig, andere Lösungen als nicht funktionierend hinzustellen, weil es dir ggfs peinlich ist den wahren Grund zu nennen

Außerdem frage ich, mich was du an:
PS: Bitte formatiere die Zeilen zur besseren Les-/Referenzier-barkeit mit den dafür vorgesehenen Codetags in der Formatierungshilfe
nicht verstanden hast.

Gruß
LotPings

PS: Und setzte diesen Beitrag bitte auf gelöst.