Tengo un archivo de texto enorme (70 GB), una línea y quiero reemplazar una cadena (token). Quiero reemplazar el token <unk>
, con otro token ficticio ( problema de guantes ).
Lo intenté sed
:
sed 's/<unk>/<raw_unk>/g' < corpus.txt > corpus.txt.new
¡pero el archivo de salida corpus.txt.new
tiene cero bytes!
También intenté usar perl:
perl -pe 's/<unk>/<raw_unk>/g' < corpus.txt > corpus.txt.new
pero recibí un error de falta de memoria.
Para archivos más pequeños, funcionan los dos comandos anteriores.
¿Cómo puedo reemplazar una cadena es un archivo? Esta es una pregunta relacionada, pero ninguna de las respuestas funcionó para mí.
Editar : ¿Qué hay de dividir el archivo en trozos de 10 GB (o lo que sea) cada uno y aplicarlo sed
en cada uno de ellos y luego fusionarlos cat
? ¿Tiene sentido? ¿Hay una solución más elegante?
split
con la -b
opción que define los tamaños de archivo de fragmentos en bytes. Procese cada uno a su vez usando sed
y el remontaje Existe el riesgo de que <unk>
se pueda dividir en dos archivos y no se encuentre ...