Ich habe eine riesige (70 GB), einzeilige Textdatei und möchte eine Zeichenfolge (Token) ersetzen. Ich möchte das Token <unk>
durch ein anderes Dummy-Token ersetzen ( Handschuhproblem ).
Ich habe versucht sed
:
sed 's/<unk>/<raw_unk>/g' < corpus.txt > corpus.txt.new
aber die ausgabedatei corpus.txt.new
hat null bytes!
Ich habe auch versucht mit Perl:
perl -pe 's/<unk>/<raw_unk>/g' < corpus.txt > corpus.txt.new
Aber ich habe einen Speicherfehler.
Bei kleineren Dateien funktionieren beide oben genannten Befehle.
Wie kann ich einen String ersetzen, der eine solche Datei ist? Dies ist eine verwandte Frage, aber keine der Antworten hat für mich funktioniert.
Bearbeiten : Wie wäre es, wenn Sie die Datei in Stücke von jeweils 10 GB (oder was auch immer) aufteilen und sed
auf jedes einzelne anwenden und sie dann zusammenführen cat
? Ist das sinnvoll? Gibt es eine elegantere Lösung?
split
mit der -b
Option "Blockdateigrößen in Byte definieren" verwenden. Jeweils nacheinander mit verarbeiten sed
und wieder zusammenbauen. Es besteht die Gefahr, dass <unk>
in zwei Dateien aufgeteilt werden kann und nicht gefunden wird ...