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