J'ai un énorme (70 Go), une ligne , un fichier texte et je veux remplacer une chaîne (jeton) en elle. Je souhaite remplacer le jeton <unk>par un autre jeton factice ( problème de gant ).
J'ai essayé sed:
sed 's/<unk>/<raw_unk>/g' < corpus.txt > corpus.txt.new
mais le fichier de sortie corpus.txt.newa zéro octet!
J'ai aussi essayé d'utiliser Perl:
perl -pe 's/<unk>/<raw_unk>/g' < corpus.txt > corpus.txt.new
mais j'ai eu une erreur de mémoire insuffisante.
Pour les fichiers plus petits, les deux commandes ci-dessus fonctionnent.
Comment puis-je remplacer une chaîne est un tel fichier? C'est une question liée, mais aucune des réponses n'a fonctionné pour moi.
Edit : Qu'en est-il de scinder le fichier en morceaux de 10 Go (ou quoi que ce soit) chacun, d'appliquer sedchacun d'eux et de les fusionner ensuite cat? Cela a-t-il du sens? Y a-t-il une solution plus élégante?
splitavec la -bdéfinition de la taille des fichiers de morceaux en octets. Traitez chacun à son tour en utilisant sedet le ré-assembler. Il y a un risque, c'est que l' <unk>on puisse diviser en deux fichiers sans les retrouver ...