Forum: PC-Programmierung Überprüfen welche Textzeilen in allen Dateien vorhanden sind


von Jay (Gast)


Lesenswert?

Hallo,

folgendes Problem ich habe mehrere Textdateien und ich möchte nun wissen 
welche Zeilen in ALLEN Dateien vorkommen. Idealerweise sollte das Ganze 
unter Linux funktionieren.

Bsp:
a.txt
- - -
a
b
c
- - -

b.txt
- - -
a
d
e
- - -

c.txt
- - -
a
c
d
- - -

Ausgabe:
- - -
a
- - -

Vielen Dank
Jay

von Tom (Gast)


Angehängte Dateien:

Lesenswert?

1
$ python 1.py *.txt
2
a
3
4
$ python 1.py a.txt c.txt
5
a
6
c

Ohne Gewähr.

von Tom (Gast)


Angehängte Dateien:

Lesenswert?

Das geht in Python auch RAM-sparender, die Geschwindigkeit ändert sich 
bei 10000 Dateien mit je 10000 Zeilen mit Zufallszahlen von 0 bis 99 
nicht. Die naive C++-Variante im Anhang braucht mit diesem Testfall 
sogar deutlich länger.

von Jay (Gast)


Lesenswert?

Hallo,

vielen Dank.

Das erste Skript hat wunderbar funktioniert.
Leider ist mir aufgefallen, dass ich mein Problem so nicht lösen kann.

Kurze Hintergrundgeschichte:
Ich habe gerade eine Sicherungskopie auf mehrere Festplatten verteilt. 
Dabei musste ich 'manuell' entscheiden, welche Ordner/Dateien auf welche 
Festplatte gespeichert werden soll um die Festplatten möglichst 
auszunutzen.

Um einigemassen sicher zu gehen, dass die Daten korrekt geschrieben 
wurde habe ich diff über die Festplatten und die Orginaldaten laufen 
lassen. Je nach Festplatten "fehlen" natürlich manche Ordner/Dateien.

Die Ausgabe von diff habe ich in Dateien umgeleitet. Alle Daten auf den 
Festplatten stimmen anscheinend mit den orginal Daten überein.

Mein Problem, welches ich mit dem Skript lösen wollte, ist: Ich wollte 
sicher gehen, dass ich nicht ausversehen einen Unterordner vergessen 
habe. Mein Gedanke war nun wenn eine Zeile in allen vier Ausgabedateien 
von diff vorkommt fehlt sie und ich habe sie nicht gesichert. 
Dummerweise geht diff anscheinend nicht in die Unterordner(vielleicht 
hab ich auf ein Flag vergessen) wenn der Ordner nicht existiert und 
somit kann ich das Skript so nicht einsetzen.

Bsp.:
a.txt
- - -
Only in /org/tmp/x
- - -

b.txt
- - -
Only in /org/tmp/
- - -

Auf Festplatte A fehlt der Ordner "/org/tmp/x" auf Festplatte B fehlt 
aber schon der übergeordnete Ordner "/org/tmp".
"/ord/tmp/x" ist also weder auf A noch auf B. Das Skript würde aber so 
sagen, dass alles in Ordnung ist.

Aber insgesamt sind es nur ca. 230 Zeilen. Das werde ich auch manuell 
hinbekommen.

Nochmals vielen Dank,
Jay

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.