Zwei sehr große Dateien zusammenfügen

Du suchst ein Programm für einen bestimmten Zweck?
Antworten
EmanuelBennici
Beiträge: 19
Registriert: 29.07.2017 16:36:14

Zwei sehr große Dateien zusammenfügen

Beitrag von EmanuelBennici » 05.08.2017 19:12:31

Hallo,
ich habe zwei große .txt Dateien (Datei1: 15 GB | Datei2: 5 GB).
Der dateiinhalt der zwei Dateien soll später in der Datei all.txt zusammengefügt werden.

Ich habe es auf meinem Server mehrmals mit cat versucht, allerdings stürzt dann immer mein Server ab.

Diese Commands hab ich ausprobiert:
cat datei1.txt datei2.txt > all.txt
cp datei1.txt all.txt; cat datei2.txt >> all.txt
...

Wie schaffe ich es beide Dateien zusammen zufügen ohne das mein Server abstüzt?

Benutzeravatar
TRex
Moderator
Beiträge: 8038
Registriert: 23.11.2006 12:23:54
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: KA

Re: Zwei sehr große Dateien zusammenfügen

Beitrag von TRex » 05.08.2017 19:15:25

cat ist genau für diesen Zweck gedacht, "concatenate". Wieso stürzt dein Rechner dabei ab?
Jesus saves. Buddha does incremental backups.
Windows ist doof, Linux funktioniert nichtDon't break debian!Wie man widerspricht

Benutzeravatar
MSfree
Beiträge: 10686
Registriert: 25.09.2007 19:59:30

Re: Zwei sehr große Dateien zusammenfügen

Beitrag von MSfree » 05.08.2017 19:21:05

EmanuelBennici hat geschrieben: ↑ zum Beitrag ↑
05.08.2017 19:12:31
Wie schaffe ich es beide Dateien zusammen zufügen ohne das mein Server abstüzt?
mit

Code: Alles auswählen

cat datei1.txt datei2.txt > all.txt
:?

Und wenn dein Server dabei abstürzt, solltest du mal seine Hardware prüfen.

Benutzeravatar
Meillo
Moderator
Beiträge: 8782
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: Zwei sehr große Dateien zusammenfügen

Beitrag von Meillo » 05.08.2017 19:53:26

Operiert der Befehl auf einem lokalen Dateisystem? Welchem? Gibt es vielleicht 16 GB-Grenzen im Dateisystem oder bei NFS, Samba oder was sonst noch im Einsatz sein koennte? Aber selbst dann sollte ein System nicht abstuerzen.


Auch wenn es eigentlich nichts zur Sache tut (weil cat(1) hier funktionieren muss), warum willst du die Dateien zusammenfuegen ... zwei so riesige Textdateien? Das koennen doch eigentlich nur Logfiles oder sonstiger Programmoutput sein oder Messdaten. Die kann man meist auch gemeinsam auswerten wenn es zwei separate Dateien sind.
Use ed once in a while!

Hans-Martin
Beiträge: 141
Registriert: 06.12.2007 18:03:03
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Kehl

Re: Zwei sehr große Dateien zusammenfügen

Beitrag von Hans-Martin » 15.09.2017 15:03:55

Ich grüble nicht über Sinn oder Unsinn der Verbindung beider Dateien. sondern überlege lediglich eine Lösungsmöglichkeit.

Ich kenne die Quellcodes der verwendeten Programme nicht, kann aber nicht ausschließen, dass die eingelesenen Datenmengen den vorhandenen Speicher "sprengen".

Solltest Du programmieren können, würde ich wie folgt vorgehen:

Öffnen beider Dateien. Von der kleineren Datei in einer Schleife nicht zu große Datenmengen einlesen und diese dann ans Ende der größeren Datei schreiben. Eine Steuerung einbauen, dass am Schluss die wahrscheinlich etwas geringere Zahl an Bytes erkannt und geschrieben wird, danach Ende der Schleife. Schließen der Dateien, des Programms.

Wenn die Überlastung des Speichers der Grund für den Absturz sein sollte, müsste es damit funktionieren.

pferdefreund
Beiträge: 3791
Registriert: 26.02.2009 14:35:56

Re: Zwei sehr große Dateien zusammenfügen

Beitrag von pferdefreund » 15.09.2017 19:28:52

Warum nicht fopen (r.. auf 1. datei und satzweise verarbeiten ? Haben wir auf den IBM-Mainfraimes immer so gemacht - Satz für Satz verarbeiten. Sind ja Textdateien, also Satz für Satz per lf getrennt.
Ansonsten einfach dd verwenden und of weglassen und ausgabe per >> an Datei1 anhängen.
dd if=datei2 bs=4096 >> datei2 sollte es auch tun. (aber immer mit Kopie testen !!!!

Benutzeravatar
Meillo
Moderator
Beiträge: 8782
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: Zwei sehr große Dateien zusammenfügen

Beitrag von Meillo » 15.09.2017 21:18:39

Ihr macht euch zu viele Gedanken! cat(1) kann beliebig grosse Dateien verarbeiten. Selbst das aelteste cat(1) kann Dateien zusammenfuegen, die groesser sind als moderne Dateisysteme sie speichern koennen. Die Begrenzungen liegen nicht am Zusammenfuegen, sondern nur am Speichern im Dateisystem.
Use ed once in a while!

Antworten