У мене величезна (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>
його можна розділити на два файли і не знайти ...