dier ersten zeilen einer datei löschen

k33n

knochenbrecher
hi,
kann mir mal jemand nen tipp geben, wie ich am schnellsten die ersten 8668814 zeilen einer textdatei lösche?

mit vim kommt nach ein paar minuten "out of memory".

thx k33n.
 
Wenn die Anzahl der Zeilen bekannt ist, dann geht das ganz einfach mit:
Code:
Wahrscheinlich kann man das mit head oder tail erledigen:

[url]http://gnosis.cx/publish/programming/text_utils.html[/url]
 
kennst du die genaue anzahl der zeilen welche du dargestellt haben möchtest?

lass sie einfach mal mit cat -n durchzählen

einfachster weg dürfte dann

Code:
tail -n 250 {dateiname} > {neuer dateiname}

sein
 
Code:
tail -n +8668814 datei
ob das allerdings mit der großen Zahl klappt, oder ob er auch dort nicht genügend Speicher hat, kann ich Dir nicht sagen...
 
*LOL*
offtopic:
hatte vor Jahren mal versucht, auf einem Celeron 300 mit 192MB RAM eine 11MB grosse (dynamisch generierte) html-Datei im Internet-Explorer zu rendern - die Kiste ist ebenfalls ausgestiegen.

ontopic:
Ich denke auch, dass Du die Datei zuerst einmal splitten solltest, vielleicht so alle 10000 Zeilen...
(Viel Spass mit den 867 Einzeldateien...)
 
notfalls nimmst du folgendes c-proggie:

Code:
#include <stdio.h>
#include <stdlib.h>

int main(void)
{
  int i;
  FILE *f;
  FILE *g;
  char buffer[1<<20];

  f=fopen("input.txt","r");
  g=fopen("output.txt","w");
  for (i=0;i<8668814;i++) fgets(buffer,sizeof(buffer),f);
  while (!feof(f))
  {
    fgets(buffer,sizeof(buffer),f);
    fprintf(g,"%s\n",buffer):
  }
  fclose(f);
  fclose(g);
}

ist nicht wirklich absturzsicher, oder schnell, und belegt auch mehr speicherplatz auf deiner platte als noetig. sollte aber tun.
 
andere frage:

wer hat 1.2gb grosse textfile's, von den die ersten 8.6 mio. zeilen gelöscht werden müssen?!

Für was soll das sein, oder darf man den Hintergrund nicht erfahren?
 
Ganz einfache Lösung:
head -100 DeineDatei.txt > Dieersten100Zeilen.txt

Auch immer wieder gut:

tail -1000 DeineDatei.txt > Dieletzten1000Zeilen.txt
(Wenn Du nur die letzten Zeilen einer Datei z.B. Log haben möchtest)

Durandal
 
so, erstmal danke für die vielen antworten.


nismo2000 schrieb:
andere frage:

wer hat 1.2gb grosse textfile's, von den die ersten 8.6 mio. zeilen gelöscht werden müssen?!

Für was soll das sein, oder darf man den Hintergrund nicht erfahren?

derjenige der immer ein mysqldump -a gemacht hat und ned mitbekommen hat, dass die datenbanken mittlerweile insgesamt 1,2 gig haben. :gpaul:

und nun alles ab der ominösen zeile braucht.

am schnellsten gings mit split, da hab ich die option -p (pattern) entdeckt und danache konnte ich aus den zig files die richtigen raussuchen.

ist aber interessant, wie jeder anders vorgeht. irgendwann, wenn ich mal zeit hab, werd ich mal genau messen, was am schnellsten ging.

n8, k33n
 
Zurück
Oben