Datei in jeweils xxx Zeilen splitten?

Dieses Thema im Forum "Shell-Skripte" wurde erstellt von fabian-k, 09.08.2007.

  1. #1 fabian-k, 09.08.2007
    fabian-k

    fabian-k Grünschnabel

    Dabei seit:
    03.08.2007
    Beiträge:
    3
    Zustimmungen:
    0
    Hi Community!

    Ich habe eine 500MB-Datei und moechte diese in jeweils ~1000-Zeilen-Dateien aufteilen. Da ich mich allerdings erst seit wenigen Tagen mit Shell-Skripten beschaeftige, habe ich absolut keine Ahnung wie das funktionieren soll :-(

    Koennt Ihr mir vielleicht etwas weiterhelfen???

    Ich habe bereits mehrfach gegooglet (etc.), aber ich habe immer nur Anleitungen zum Splitten in vorgegebene Dateigroessen gefunden, aber nicht in Zeilenanzahlen.

    Hintergrund:
    Ich habe, wie erwaehnt, eine ~500MB große Datei. Dabei handelt es sich um eine .csv-Datei. Diese soll in Microsoft Excel (und/oder OpenOffice) importiert werden. Da M$ Excel jedoch nur maximal 65536 Zeilen anzeigen kann, muss ich diese .csv-Datei auf mehrere Dateien aufteilen. (1000 Zeilen sind nur ein Beispiel. Ich wuerde dann jeweils 65000-Zeilen-Dateien erstellen lassen...)

    mfg
    n00b:fabian
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. #2 madfool, 09.08.2007
    madfool

    madfool Tripel-As

    Dabei seit:
    12.08.2004
    Beiträge:
    192
    Zustimmungen:
    0
  4. #3 Fallout, 09.08.2007
    Zuletzt bearbeitet: 09.08.2007
    Fallout

    Fallout Doppel-As

    Dabei seit:
    02.03.2007
    Beiträge:
    120
    Zustimmungen:
    0
    Hi,

    na was könnte zum Splitten denn naheliegender sein als split? ;-)

    Code:
    split -l 1000 inputfile outputpart_
    Teilt inputfile in 1000er Zeilen und nennt sie outputpart_aa, -ab, -ac, usw.

    Gruß Daniel
     
  5. #4 fabian-k, 09.08.2007
    fabian-k

    fabian-k Grünschnabel

    Dabei seit:
    03.08.2007
    Beiträge:
    3
    Zustimmungen:
    0
    Hatte ich auch schon probiert.
    Aber damit erhalte ich ja dann in der Ausgabe keine .csv-Dateien ;-)
    (Ich muesste alle nachtraeglich umbenennen.. Bloed :( Vor allem weil es sein kann, dass es im Endeffekt 200-Zeilen-Dateien werden sollen, was bei 200.000 Zeilen [und mehr..] eine ziemlich langandauernde Aufgabe waere...)


    Ich habe folgendes versucht:
    Code:
    OUT=0
    DATA=1
    while read LINE;
    do
    	if [ $DATA -ne "65000" ] 
    		then
    			$LINE > $OUT.txt 
    			$DATA=`expr $DATA + 1`
    		else
    			$OUT=`expr $OUT + 1`
    			$DATA=1
    	fi
    done < input.csv
    Fehlermeldung:
    Irgendwas laeuft da noch nicht rund ?(
     
  6. #5 Fallout, 09.08.2007
    Fallout

    Fallout Doppel-As

    Dabei seit:
    02.03.2007
    Beiträge:
    120
    Zustimmungen:
    0
    Hi,

    leider bietet split keine alternativen Suffixe an. Aber das ganze läßt sich ja auch mit Hilfe von find oder ähnlichen Werkzeugen zurechtbiegen:

    Code:
    find . -name 'outputpart_*' -exec mv "{}" "{}.csv" \;
    Gruß Daniel
     
  7. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  8. #6 smg, 09.08.2007
    Zuletzt bearbeitet: 09.08.2007
    smg

    smg Regex Fetischist

    Dabei seit:
    20.05.2007
    Beiträge:
    195
    Zustimmungen:
    0
    Ort:
    /home/stephan/
    Was ist da das Problem?
    Code:
    split -l 1000 inputfile outputpart_
    for file in outputpart_*; do mv "$file" "${file}.csv"; done
    Inperformant bei vielen Dateien, nimm xargs!

    Ein Bashscript, musst nur irgendwohin kopieren und Variablen füllen im Script.
     
  9. #7 fabian-k, 09.08.2007
    fabian-k

    fabian-k Grünschnabel

    Dabei seit:
    03.08.2007
    Beiträge:
    3
    Zustimmungen:
    0
    Ah, ihr seid die Besten!! ;-)

    Vielen Dank, es hat alles funktioniert.
    (Habe es aus performancegruenden [Live-Server] mit smg's Vorschlag durchgefuehrt.)

    mfg&danke@all
    fabian
     
Thema: Datei in jeweils xxx Zeilen splitten?
Besucher kamen mit folgenden Suchen
  1. unix große dateien splitten

    ,
  2. datei split bash script

    ,
  3. linux zeile splitten

    ,
  4. unix datei in zeilen zerlegen,
  5. split textdatei zeilen
Die Seite wird geladen...

Datei in jeweils xxx Zeilen splitten? - Ähnliche Themen

  1. Wie kann ich pro Aufruf die jeweils nächste Zeile einer Datei auslesen?

    Wie kann ich pro Aufruf die jeweils nächste Zeile einer Datei auslesen?: Hallo zusammen, ich hoffe ihr könnt mir helfen. Und zwar bin ich auf der Suche nach einer Möglichkeit, wie man Zeilenweise aus einer Datei...
  2. User sollen Dateien speichern und ändern, aber nicht neu anlegen dürfen

    User sollen Dateien speichern und ändern, aber nicht neu anlegen dürfen: Hallo liebe Helfer, welche Einstellungen muss ich in der smb.conf bzw. unter Linux vornehmen, damit User vorhandene Dateien öffnen und speichern...
  3. Suche in Datei doppelte Wörter in jeder Zeile bis zum dritten Leerzeichen...

    Suche in Datei doppelte Wörter in jeder Zeile bis zum dritten Leerzeichen...: Ich habe eine Textdatei in der ich Einträge bis zum 3. Leerzeichen mit den restlichen Zeilen (auch nur bis 3. Leerzeichen) vergleichen muss und...
  4. Alle Dateien eines Verzeichnisses mit einer anderen Datei vergleichen

    Alle Dateien eines Verzeichnisses mit einer anderen Datei vergleichen: Hallo, ich habe ein Verzeichnis, darin enthalten sind mehrere Dateien. Nun möchte ich alle Dateien (Parameter $1) gegen eine konstante Datei...
  5. Dateiinhalte vergleichen - Neue Sätze dann ausgeben

    Dateiinhalte vergleichen - Neue Sätze dann ausgeben: Liebe Forumsmitglieder, ich benöte mal wieder Eure Hilfe: Ich möchte 2 Dateien vergleichen. Datei-1 hat z.B. 100 Datensätze mit mehreren Feldern...