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.new
a 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 sed
chacun d'eux et de les fusionner ensuite cat
? Cela a-t-il du sens? Y a-t-il une solution plus élégante?
split
avec la -b
définition de la taille des fichiers de morceaux en octets. Traitez chacun à son tour en utilisant sed
et le ré-assembler. Il y a un risque, c'est que l' <unk>
on puisse diviser en deux fichiers sans les retrouver ...