Textdateien/ Listen - Doppelte Werte bzw. identischen Zeileninhalt zählen

tiermutter

Well-known member
Moin zusammen,

kurz zum Hintergrund:
Ich verwende bei mir diverse Filterlisten zum blockieren von Werbung, Tracking, Malware, ... Zum einen IP Listen (nur Malware) und zum anderen DNS-Listen.
Solche Liste sind unter Umständen natürlich recht groß und erfordern entsprechende Ressourcen, weshalb ich die Listen gerne so reduzieren möchte, dass ich bei 800k Einträgen nicht 400k Einträge doppelt habe.
Bei den IP Listen ist das kein Problem, da bei firehol.org sauber aufgeführt ist, welche Liste zu welchem Anteil in einer andere Liste vorhanden ist; hier am Beispiel der Liste "spamhaus_drop":
1645515783246.png
"spamhaus_drop" ist also zu 100% in der Liste "firehol_l1" enthalten und "firehol_l1" enthält 2,95% identische Einträge zu "spamhaus_drop".
=> da ich "firehol_l1" anwende, brauche ich ich "spamhaus_drop" nicht anwenden und kann mir die Last sparen; "firehol_l1" bietet außerdem weitaus mehr Einträge.

Für DNS Blocklisten gibt es sowas aber ich nicht und nun wollte ich ganz gerne zwei oder mehrere Listen miteinander vergleichen und einfach nur zählen, wie viele Einträge in Liste 1 identisch zur Liste 2 sind.

Mein erster Gedanke ging an Excel, hier scheitere ich allerdings daran, dass das Zählen identischer Werte scheinbar nur für Zahlenwerte, aber nicht für Textwerte möglich ist. Zudem ist Excel (bzw. mein Rechner) mit der Anzahl von (in der "schlimmsten" Kombo) 836k Einträgen/ Zeilen dezent überfordert.
Mein weiterer Gedanke ging an diverse Texteditor, die eine Vergleichsfunktion haben. Leider werden Unterschiede nur optisch angezeigt und nicht gezählt, was mir keinen Nutzen bringt.
Mein letzter Gedanke, den ich als Mausschubser aber noch nicht ausprobiert habe (und weil ich auch nicht verstanden habe, ob das Ergebnis überhaupt das ist, was ich haben will) waren diverse Tools auf dem Linux-CLI.

Hat hier jemand eine Idee, wie das zu bewerkstelligen ist?
 

tiermutter

Well-known member
:)
das hat mir bislang am besten gefallen, weil es die Daten am schnellsten verarbeitet hat... allerdings werden Unterschiede hier auch nur angezeigt und nicht gezählt.
Oder ich habe es noch nicht gefunden oder verstanden :D
 

Tommes

Active member
Fürs zählen ist Graf Zahl aus der Sesamstrasse zuständig… kleiner Scherz ☺️

Was das zählen in WinMerge angeht bin ich überfragt. Ich habe das Tool bisher immer nur dazu genutzt um Unterschiede in zwei Scriptdateien zu lokalisieren.
 

tiermutter

Well-known member
Dafür ist das Tool (wie auch die anderen) wohl auch gedacht.
Es wird unten zwar durchaus eine Anzahl Unterschiede ausgewiesen, aber die kann nicht für den erwünschten Zweck dienlich sein:
1645524845088.png
Wie die Angabe von zwei Unterschieden zustande kommt blicke ich nicht ganz, für mich wären es insgesamt 4 Unterschiede, aber selbst dann könnte ich mit dem Wert nicht viel beschicken...
Für meine Anwendung relevant wäre dass es 3 identische Einträge gibt und dass links einen und rechts drei zusätzliche Einträge hat. Die Zeilennummer darf dabei natürlich auch nicht berücksichtigt werden...
 

Barungar

Active member
Auf der *nix Console ein Kinderspiel. Ich mache mal kurz eine Anleitung.

Gegeben seien zwei beliebige Textdatei, diese sind zu kombinieren und Dubletten sind zu entfernen.

texta
aaaaa​
bbbbb​
ccccc​

textb
ddddd​
bbbbb​
eeeee​

Das Element "bbbbb" ist in beiden vorhanden.

# cat texta textb
aaaaa​
bbbbb​
ccccc​
ddddd​
bbbbb​
eeeee​

# cat texta textb | sort
aaaaa​
bbbbb​
bbbbb​
ccccc​
ddddd​
eeeee​

#cat texta textb | sort | uniq
aaaaa​
bbbbb​
ccccc​
ddddd​
eeeee​
 

tiermutter

Well-known member
Hm... was hier passiert habe ich glaube ich begriffen... hier bekomme ich aber doch nur eine Ausgabe der unter Ausschluss doppelter Werte sortierten, zusammengeführten Daten?
Unterm Strich weiß ich nachher nicht, welche Daten ursprünglich woher kommen... immerhin könnte ich die Anzahl an Daten/ Zeilen von #cat texta textb | sort | uniq mit der Anzahl der gesamten Daten aus den Dateien vergleichen und hätte somit die Anzahl identischer Daten... Hm, ok... geht es mit einfachster Mathematik weiter, weiß ich dann auch welche Datei wie viele zusätzliche Einträge hat und könnte mich somit entscheiden wie sinnvoll es ist beide Dateien zu verwenden bzw. welche der beiden ich verwende.
Dann bleibt die Frage, woher ich nach #cat texta textb | sort | uniq herausfinde, wie viele Daten nun enthalten sind... oder habe ich hier noch nen Denkfehler?
 

Barungar

Active member
Hm... was hier passiert habe ich glaube ich begriffen... hier bekomme ich aber doch nur eine Ausgabe der unter Ausschluss doppelter Werte sortierten, zusammengeführten Daten?

Das ist richtig, Du hast danach keine Aussage mehr über die Herkunft hast. Ich hatte es aber verstanden, dass das nicht unbedingt notwendig sei.

Mit "wc" kannst Du die Datein vergleichen...


# wc texta textb
3 3 18 texta​
3 3 18 textb​
6 6 36 insgesamt​

Es sagt Dir dann, dass beide Datein 3 Zeilen, 3 Wörter und 18 Zeichen haben.

#cat texta textb | sort | uniq | wc
5 5 30​

Sagt Dir dann, dass das Endergebnis 5 Zeilen, 5 Wörter und 30 Zeichen hat.
Im direkten Vergleich des "insgesamt" von oben, sieht man also eine Zeile, mit einem Wort und 5 Zeichen ist enfallen.
Man kann so nur nicht direkt sagen aus welcher der beiden Dateien.
 

Zurzeit aktive Besucher

Keine Mitglieder online.

Neueste Beiträge

Letzte Anleitungen

Statistik des Forums

Themen
565
Beiträge
8.272
Mitglieder
193
Neuestes Mitglied
cekap
Oben