Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Editieren einer 20MB Datei

Empfohlene Antworten

Veröffentlicht

Moin!

Ich habe hier ein 20 MB Logfile vor mir, indem ich so einige Einträge ändern muß. Eigentlich eine ganz einfache Sache, denn es wird jeweils die gleiche Zeichenfolge durch eine andere ersetzt.

Allerdings würde das mit einem Editor wie Notepad mehrere Tage dauern. Welche andere Möglichkeit gibt es?

Mit Word geht's leider auch nicht schneller...

Ich bräuchte eine andere Methode, als einen Editor dafür zu verwenden.

Original erstellt von OiProll:

<STRONG>Mit Word geht's leider auch nicht schneller...

Ich bräuchte eine andere Methode, als einen Editor dafür zu verwenden.</STRONG>

??? Entweder verstehe ich dien problem nicht oder du mich nicht :confused:

Du willst eine bestimmte zeichenkette durch eine neue ersetzen? Dann guck dir mal die suchen & ersetzen Funktion an. Dort gibst du die gesuchte ein und eben die "neue". dann sagst du suchen & ersetzen und bei der ersten Abfrage kannst du dann alle ersetzen auswählen, so daß er die 20 MB von ganz alleine bearbeitet ;) ... schneller gehts nun wirklich nicht.

2-frozen

schreib dir ein Program (Java, ne besser C++ , aber eigentlich egal mit was)

oeffne die Datei les zeile fuer zeile ein

und ersetze immer dann das gesuchte durch das neue

dafuer braucht man keinen Tag

kluges Hasi ... :D:D *frechsei*

Original erstellt von Hasi:

<STRONG>schreib dir ein Program (Java, ne besser C++ , aber eigentlich egal mit was)

oeffne die Datei les zeile fuer zeile ein

und ersetze immer dann das gesuchte durch das neue

dafuer braucht man keinen Tag</STRONG>

Ähm ja...kann ich Programmieren? *lol*

wie????

zwingt man euch nicht in die BS zu gehen,

wir proggen da

aber sonst finde ich die Idee von 2-Mod muesste gut das muesste schon klappen oder nicht???

@Poldi: stimmt haette vielleicht ein [Klugscheiss] machen sollen trotzdem danke :D:rolleyes::D

Ich gehe schon in die BS. Da haben wir bisher gerade mal die Grundlagen (Syntax usw.) von C kennengelernt. Jetzt sind wir beim Thema Datenbanken.

Die Methode mit dem Suchen/Ersetzen ist zwar die einfachste, aber es dauert bestimmt mindestens 2 Tage bei einer Datei mit dem Umfang.

hast du denn ne entwicklungsumgebung?

Borland zum Beispiel?

Mit Online Hilfe?

Dann nix wie los!!

Lerning bei ausprobiering ... :D

JBuilder4 kann man sich zum Beispiel Trial kostenlos downloaden

:D

Original erstellt von Hasi:

<STRONG>JBuilder4 kann man sich zum Beispiel Trial kostenlos downloaden

:D</STRONG>

Ich schätze einfach mal, bis ich das mit unserer HighSpeed ISDN-Leitung runtergeladen hätte, ist meine Workstation doch mit Notepad schneller. ;)

Hi OiProll,

ich verstehe dein Problem mit der Zeit nicht. :confused:

Habe gerade in einer 2,5 MB grossen Tetxdatei das Wörtchen ein (kam ca. 2500 mal vor) durch ein anderes ersetzen lassen und das ging schneller als ein Augenzwinkern.

Mein Rat, wie der auch von 2-frozen, probier es einfach aus.

Manne :cool:

Ich habe das Ganze ja laufen im Moment. Eigentlich hatte ich auch nicht erwartet, daß ich mit einem PIII 750 / 256 MB einige Stunden dafür brauche...

Hi,

versuchs mal mit einem vernünftigen Editor (z.B. textpad (www.textpad.com))

mit dem hab ich kürzlich dasselbe auf einige MB HTML-Dateien gemacht,dauerte keine Sekunde.

Gruß,

BunteKuh

Hi OiProll,

Ich habe das Ganze ja laufen im Moment. Eigentlich hatte ich auch nicht erwartet, daß ich mit einem PIII 750 / 256 MB einige Stunden dafür brauche...
:confused: :confused:

Sag mal ist dein Rechner vielleicht abgestuerzt oder laesst du das Ganze im Hintergrund laufen und im Vordergrund arbeitest du mit ressourcenhungrigen Programmen?

Manne

 


#include <stdio.h>

#include <stdlib.h>

# define MAXCHARS 1500



// --------------- G L O B A L E   V A R I A B L E N --------------------

char InputFile[MAXCHARS];

char OutputFile[MAXCHARS];

char Suchstring[MAXCHARS];

char ReplaceString[MAXCHARS];

// --------------- F U N K T I O N S P R O T O T Y P E N ----------------

void Programmaufruf_pruefen(int argc, char *argv[]);

void stringcopy(char *ziel, char *quelle, int Groesse);


//*************************************************************

//                         ---------

//                          M A I N 

//                         ---------

//*************************************************************

int main(int argc, char *argv[]) {


    char Zeile[MAXCHARS];

    char puffer1[MAXCHARS];

    char puffer2[MAXCHARS];

    int position;

    int laenge;

    int Zeilenlaenge;

    int bla;

    int i;

    int k;

    char *loc;

    FILE *InFile;  

    FILE *OutFile;  


    Programmaufruf_pruefen(argc, argv);


    InFile = fopen(InputFile, "r");

    OutFile = fopen(OutputFile, "w");

    laenge = strlen(Suchstring);

    printf("Filename: %s\n", InputFile);


    	while ((fgets(Zeile,MAXCHARS-1,InFile)) != 0) {


	    while ((loc = strstr(Zeile,Suchstring)) != 0) {

		//printf ("Zeile a: %s\n", Zeile);


		puffer1[0]='\0';

		puffer2[0]='\0';


		Zeilenlaenge = strlen(Zeile);


		position = loc-Zeile;

		//printf("Position: %d\n", position);



		strncpy(puffer1,Zeile,position);

		puffer1[position] = '\0';


		bla = position+laenge;

		//printf("bla %d\n",bla);


		k=0;

		for (i=bla; i<Zeilenlaenge; i++) {

		    puffer2[k] = Zeile[i];

		    k++;

		}

		puffer2[k] = '\0';


		//printf("Puffer1: >%s<\n", puffer1);

		//printf("Puffer2: >%s<\n", puffer2);


		stringcopy(Zeile,puffer1,MAXCHARS);

		strcat(Zeile,ReplaceString);

		strcat(Zeile,puffer2);




	    } // while suchbegriff gefunden 

	    printf ("Zeile b: %s\n", Zeile);

	    fprintf(OutFile,"%s",Zeile); 



	} // while fgets ENDE

	fclose(OutFile);

	fclose(InFile);


} // ende MAIN


// ===========================================================

//                            ----

//*************************************************************


void Programmaufruf_pruefen(int argc, char *argv[]) {


    // Variablen:

    char *paramValue1;

    char *paramValue2;

    char *paramValue3;

    char *paramValue4;


    // --------------------

    //printf("Anzahl Parameter; %d", argc);

    if (argc == 5) { 

	//printf("Vier Parameter sind da");

	// --------------------

	if ((paramValue1 = (char*)malloc((strlen(argv[1]) + 1) * sizeof(char)))==NULL) {

	    printf("Speicher konnte nicht reserviert werden!\n");

	    printf("Programm bricht ab!\n");

	    exit(55);

	}


	paramValue1 = argv[1];

	stringcopy(InputFile, paramValue1, MAXCHARS);

	// --------------------

	if ((paramValue2 = (char*)malloc((strlen(argv[2]) + 1) * sizeof(char)))==NULL) {

	    printf("Speicher konnte nicht reserviert werden!\n");

	    printf("Programm bricht ab!\n");

	    exit(55);

	}


	paramValue2 = argv[2];

	stringcopy(Suchstring, paramValue2, MAXCHARS);

	// --------------------

	if ((paramValue3 = (char*)malloc((strlen(argv[3]) + 1) * sizeof(char)))==NULL) {

	    printf("Speicher konnte nicht reserviert werden!\n");

	    printf("Programm bricht ab!\n");

	    exit(55);

	}


	paramValue3 = argv[3];

	stringcopy(ReplaceString, paramValue3, MAXCHARS);

	// --------------------

	if ((paramValue4 = (char*)malloc((strlen(argv[4]) + 1) * sizeof(char)))==NULL) {

	    printf("Speicher konnte nicht reserviert werden!\n");

	    printf("Programm bricht ab!\n");

	    exit(55);

	}


	paramValue4 = argv[4];

	stringcopy(OutputFile, paramValue4, MAXCHARS);

	// --------------------

    } else {


	printf("Nicht genug Parameter übergeben!");

	exit;


    }


}

// ===========================================================

//                            ----

//*************************************************************

// Funktion: stringcopy

// Beschreibung: 

// diese funktion wurde geschaffen, damit man nicht zu viel text in zu 

// kleine strings schreiben kann 

void stringcopy (char *ziel, char *quelle, int Groesse) {

    if ( (Groesse-strlen(ziel)) > strlen(quelle) ) {

	strcpy(ziel,quelle);

    }else{

	printf("Stringcopy fehlgeschlagen!\n");

	printf("Ziel: >%s<, Quelle: >%s< Groesse: %d\n", ziel, quelle, Groesse);

	exit(88);

    }

} // ende stringcopy


 

probiers mal damit, mir war langweilig ...

Der Rechner läuft eigentlich wunderbar. Allerdings laufen im Hintergrund so einige Serverdienste. Laut Task-Manager kriegt Notepad aber 50% der CPU-Zeit.

Danke Poldi!

Ich versuch's damit mal. :)

bitte bitte, gern geschehen. Gib mir mal deine Email, dann schick ich dir die Rechnung ... *grins* :D:D

sag bescheid obs läuft, ist nämlich für unix geschrieben, kann sein daß ne bibliothek fehlt oder so

Meiner ist kürzer ;) -- langsamer und schlechter lesbar, aber was soll's:


#!/usr/bin/perl

##Anzahl der Argumente testen##

($#ARGV < 3)?(print ("Ungültige Anzahl von Argumenten\n\nSyntax:\n ersetze <Eingabedatei> <Ausgabedatei> <Suchzeichenfolge> <Ersetzzeichenfolge>\n\n"), exit(1)) $INFILE=$ARGV[0], $OUTFILE=$ARGV[1], $SSTRING=$ARGV[2], $RSTRING=$ARGV[3], $COUNTER=0);

##Testen, ob infile existiert und lesbar ist, wenn ja öffnen, wenn nein abbreche

n##                                                                             (! -r $INFILE)?(print("Eingabedatei '$INFILE' existiert nicht, oder ist nicht lesbar.\nBreche ab...\n\n"), exit(3)) :open INFILE, $INFILE;

##Testen, ob bereits ein file namens outfile existiert, wenn ja, infile schließen und abbrechen##                                                               (-e $OUTFILE)?(print("Ausgabedatei '$OUTFILE' existiert bereits.\nBreche ab...\n\n"), close (INFILE), exit(2)) :open OUTFILE, ">".$OUTFILE;

##einlesen und ersetzen##

while (<INFILE> ) {

    $COUNTER+=($_=~s/$SSTRING/$RSTRING/g);

    print OUTFILE $_;

}

##files schließen##

close INFILE && close OUTFILE;

##;o)##

print ("$COUNTER Ersetzungen gesamt.\n\n");

[/code]

ZäR Wasi

Unfähig einen Button zu deaktivieren, Sch**ß Smilies ARRGHHHHHHHHH!


#!/usr/bin/perl

##Anzahl der Argumente testen##

($#ARGV < 3)?(print ("Ungültige Anzahl von Argumenten\n\nSyntax:\n ersetze <Eingabedatei> <Ausgabedatei> <Suchzeichenfolge> <Ersetzzeichenfolge>\n\n"), exit(1))$INFILE=$ARGV[0], $OUTFILE=$ARGV[1], $SSTRING=$ARGV[2], $RSTRING=$ARGV[3], $COUNTER=0);


##Testen, ob infile existiert und lesbar ist, wenn ja öffnen, wenn nein abbrechen##

(! -r $INFILE)?(print("Eingabedatei '$INFILE' existiert nicht, oder ist nicht lesbar.\nBreche ab...\n\n"), exit(3)):open INFILE, $INFILE;


##Testen, ob bereits ein file namens outfile existiert, wenn ja, infile schließen und abbrechen##

(-e $OUTFILE)?(print("Ausgabedatei '$OUTFILE' existiert bereits.\nBreche ab...\n\n"), close (INFILE), exit(2)):open OUTFILE, ">".$OUTFILE;

##einlesen und ersetzen##

while (<INFILE>) {

    $COUNTER+=($_=~s/$SSTRING/$RSTRING/g);

    print OUTFILE $_;

}

##files schließen##

close INFILE && close OUTFILE;

##;o)##

print ("$COUNTER Ersetzungen gesamt.\n\n");

[/code]

ZäR Wasi

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.