romy: Suchen und Ersetzen in übergroßen Dateien

Hallo ihr Lieben,

ich suche eine Software, ein Tool ein Skript etc. zum Suchen und Ersetzen in übergroßen Textdateien. Mein Beispiel hat 163 Mio Zeichen und die zu ersetzende Zeichenfolge ist ca 300.000 Mal vorhanden. Google spuckt mir mangels guter Suchbegriffe leider nichts Brauchbares aus. Ich habe ein mehrere Windowsbetriebssysteme und ein HPUX-Betriebssystem zur Verfügung. Ich könnte Auf den Windowssystemen kann ich auch was installieren, bei dem Unix-System kann ich nur Boardmittel nutzen. Ich könnte Perl und PHP umsetzen, aber ich befürchte, dass wird alles zu langsam sein.

Das Textpad würde es wahrscheinlich machen, ich habe aber nach 4 Stunden abbrechen müssen. Word/Wordpad kommt nicht in Frage, da ich befürchte, dass an der textcodierung was gemacht wird und das darf nicht sein. Beim vi stelle ich mich immer so an, die Befehle würde ich bestimmt noch rausfinden, aber würde der das dann packen?

Hat jemand einen Tip für mich?

ciao
romy

  1. Hallo romy.

    ich suche eine Software, ein Tool ein Skript etc. zum Suchen und Ersetzen in übergroßen Textdateien. Mein Beispiel hat 163 Mio Zeichen und die zu ersetzende Zeichenfolge ist ca 300.000 Mal vorhanden. […] Beim vi stelle ich mich immer so an, die Befehle würde ich bestimmt noch rausfinden, aber würde der das dann packen?

    :%s/original/ersatz/g
     ^^                 ^
     12                 3

    1: Dateiweite Suche
    2: Suchen-und-Ersetzen-Kommando
    3: Alle Treffer ersetzen

    Einen schönen Mittwoch noch.

    Gruß, Mathias

    --
    sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:} fl:( ss:) ls:[ js:|
    debian/rules
    1. Hi Mathias,

      :%s/original/ersatz/g
      ^^                 ^
      12                 3

      So, jetzt hab ich mich schon getraut, es mal zu probieren ;), aber leider klappt es nicht, da ich eine wichtige Tatsache verschwiegen habe. Alle Zeichen sind ich einer Zeile. Zeilenumbrüche sind bei diesem Format leider nicht erlaubt. (Falls es jemanden interessiert: DTA -> Bankformat)
      Vi zeigt an, dass ihm die Zeile zu lang ist. Hast du noch eine Idee?

      Danke dir!

      ciao
      romy

      1. Hi romy

        Vielleicht macht es sed:

        %prompt% cat org_file | sed -e 's/original/ersatz/g' > new_file

        hab aber keine Ahnung ob das nicht zuviel ist für den kleinen sed ;)

        Grüsse,
        eeye

        1. Hi eeye,

          %prompt% cat org_file | sed -e 's/original/ersatz/g' > new_file
          hab aber keine Ahnung ob das nicht zuviel ist für den kleinen sed ;)

          Schöne Idee, dass probier ich später auf jeden Fall mal aus. Das würde mich direkt mal interessieren.

          Danke für die nette Idee.

          ciao
          romy

        2. Tach,

          %prompt% cat org_file | sed -e 's/original/ersatz/g' > new_file

          das ist ein klarer Fall von UUOC. Besser und schneller wäre:

          sed -e 's/original/ersatz/g' org_file > new_file

          mfg
          Woodfighter

          1. Hi Jens,

            %prompt% cat org_file | sed -e 's/original/ersatz/g' > new_file
            das ist ein klarer Fall von UUOC. Besser und schneller wäre:
            sed -e 's/original/ersatz/g' org_file > new_file

            Ich habe beide Befehle mal ausprobiert, bekomme aber nur ein leeres new_file nach ein paar Sekunden. Muss ich Original und Ersatz irgendwie in Anführungszeichen setzen oder etwas ähnliches machen?

            Danke.

            ciao
            romy

  2. Hej,

    ich suche eine Software, ein Tool ein Skript etc. zum Suchen und Ersetzen in übergroßen Textdateien. Mein Beispiel hat 163 Mio Zeichen und die zu ersetzende Zeichenfolge ist ca 300.000 Mal vorhanden.
    [...]
    Ich könnte Perl und PHP umsetzen, aber ich befürchte, dass wird alles zu langsam sein.

    Wir setzen Perl in einem Praktikum ein, in dem immerhin Textdatein mit etwa 5 Mio Zeichen mit regulären Ausdrücken durchgesucht werden. Obwohl der RegEx recht komplex ist, läuft das sehr stabil und zügig. Die Geschwindigkeit dürfte allerdings (außer von dem RegEx) maßgeblich von Deinem RAM abhängen, es sollten also schon mindestens 170 MB frei sein. Aufgrund der einfachen Natur Perls bechränkt sich ein solches Programm auch auf weniger als 10 Zeilen. Außerdem sind derartige Vorhaben, die ursprüngliche Stärke der Practical Extraction and Report Language.

    Beste Grüße
    Biesterfeld

    --
    Art.1: Et es wie et es
    Art.2: Et kütt wie et kütt
    Art.3: Et hätt noch immer jot jejange
    Das Kölsche Grundgesetz
    1. Hi Biesterfeld,

      Wir setzen Perl in einem Praktikum ein, in dem immerhin Textdatein mit etwa 5 Mio Zeichen mit regulären Ausdrücken durchgesucht werden. Obwohl der RegEx recht komplex ist, läuft das sehr stabil und zügig. Die Geschwindigkeit dürfte allerdings (außer von dem RegEx) maßgeblich von Deinem RAM abhängen, es sollten also schon mindestens 170 MB frei sein. Aufgrund der einfachen Natur Perls bechränkt sich ein solches Programm auch auf weniger als 10 Zeilen. Außerdem sind derartige Vorhaben, die ursprüngliche Stärke der Practical Extraction and Report Language.

      Wäre sicherlich auch eine schöne Variante gewesen. Ich denke auch, dass genug RAM da gewesen wäre.

      Danke dir auf jeden Fall!

      ciao
      romy

  3. hi,

    ich suche eine Software, ein Tool ein Skript etc. zum Suchen und Ersetzen in übergroßen Textdateien. Mein Beispiel hat 163 Mio Zeichen

    Also ca. 155 MB, wenn ich mich nicht verrechnet habe.

    und die zu ersetzende Zeichenfolge ist ca 300.000 Mal vorhanden.

    Also nur Suchen/Ersetzen, keine regulären Ausdrücke o.ä.?

    Das Textpad würde es wahrscheinlich machen, ich habe aber nach 4 Stunden abbrechen müssen.

    Also mit Ultraedit hantiere ich auf der Arbeit unter Win2k/XP auch des öfteren mit Dateien dieser Größenordnung, und Suchen/Ersetzen kommt dabei auch öfters vor.

    "Meine" Dateien haben dabei zwar Zeilenumbrüche (Zeilen ca. 300 bis 500 Zeichen lang), wo du ja sagtest, deine hätten keine.
    Aber ob das die Performance beim Suchen/Ersetzen beeinflussen dürfte? M.E. nicht.

    Kostenlose Trialversion kannst du auf der Seite runterladen, also probier's doch mal aus, ob UE das schafft - hast ja nix zu verlieren, sofern du dran denkst vorher Sicherheitskopien deiner Dateien anzulegen :-)

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }
    1. Hi wahsaga,

      Kostenlose Trialversion kannst du auf der Seite runterladen, also probier's doch mal aus, ob UE das schafft - hast ja nix zu verlieren, sofern du dran denkst vorher Sicherheitskopien deiner Dateien anzulegen :-)

      Er hat es geschafft und zwar erstaunlich schnell (10 Sekunden pro Suchen und Ersetzen) und dabei jedes Mal gut 300.000 - 400.000 Datensätze verarbeitet. Jetzt bin ich sehr beeindruckt.

      Danke dir!

      ciao
      romy