Büyük bir (70GB), bir satır , metin dosyasına sahibim ve içindeki bir dizgiyi (token) değiştirmek istiyorum. Belirteci <unk>
, başka bir sahte belirteçle değiştirmek istiyorum ( eldiven sorunu ).
Denedim sed
:
sed 's/<unk>/<raw_unk>/g' < corpus.txt > corpus.txt.new
ancak çıktı dosyasının corpus.txt.new
sıfır baytı var!
Perl kullanarak da denedim:
perl -pe 's/<unk>/<raw_unk>/g' < corpus.txt > corpus.txt.new
ama yetersiz bellek hatasıyla karşılaştım.
Daha küçük dosyalar için, yukarıdaki komutların ikisi de çalışır.
Nasıl bir dize değiştirebilirim böyle bir dosyadır? Bu ilgili bir soru, ancak cevapların hiçbiri benim için çalıştı.
Düzenleme : Dosyayı sed
her biri 10GB'lık (veya her neyse) parçalara bölmek ve her birine uygulamak ve daha sonra bunları birleştirmek cat
? bu mantıklı mı? Daha zarif bir çözüm var mı?
split
ile -b
opsiyon bayt öbek dosya boyutları tanımlayan. Her birini sırayla kullanarak sed
tekrar birleştirin. <unk>
İki dosyaya bölünebilmesi ve bulunmaması riski var ...