У меня есть огромный (70 ГБ), одна строка , текстовый файл, и я хочу заменить строку (токен) в нем. Я хочу заменить токен <unk>
другим фиктивным токеном ( проблема с перчатками ).
Я пробовал sed
:
sed 's/<unk>/<raw_unk>/g' < corpus.txt > corpus.txt.new
но выходной файл corpus.txt.new
имеет нулевые байты!
Я также пытался использовать Perl:
perl -pe 's/<unk>/<raw_unk>/g' < corpus.txt > corpus.txt.new
но я получил ошибку нехватки памяти.
Для файлов меньшего размера обе вышеуказанные команды работают.
Как мне заменить строку таким файлом? Это связанный вопрос, но ни один из ответов не сработал для меня.
Изменить : Как насчет разделения файла на куски по 10 ГБ (или что-то еще) каждый и применения sed
к каждому из них, а затем объединить их с cat
? Имеет ли это смысл? Есть ли более элегантное решение?
split
с -b
опцией, определяющей размеры файла чанка в байтах. Обработайте каждый по очереди, используя sed
и собирая заново. Существует риск того, что <unk>
его можно разделить на два файла и не найти ...