ฉันมีขนาดใหญ่ (70GB) หนึ่งบรรทัดไฟล์ข้อความและฉันต้องการแทนที่สตริง (โทเค็น) ในนั้น ฉันต้องการแทนที่โทเค็น<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
แต่ฉันได้รับข้อผิดพลาดหน่วยความจำไม่เพียงพอ
สำหรับไฟล์ขนาดเล็กคำสั่งทั้งสองข้างต้นจะใช้งานได้
ฉันจะแทนที่สตริงเป็นไฟล์ดังกล่าวได้อย่างไร นี่เป็นคำถามที่เกี่ยวข้อง แต่ไม่มีคำตอบสำหรับฉันเลย
แก้ไข : สิ่งที่เกี่ยวกับการแยกไฟล์ในกลุ่มของ 10GBs (หรืออะไรก็ได้) และนำไปใช้sed
กับแต่ละคนแล้วรวมกับพวกเขาcat
? มันสมเหตุสมผลไหม มีวิธีแก้ปัญหาที่สง่างามกว่านี้ไหม?
split
กับ-b
ตัวเลือกที่กำหนดขนาดของไฟล์ก้อนเป็นไบต์ ประมวลผลตามลำดับโดยใช้sed
และประกอบใหม่ มีความเสี่ยงคือ<unk>
สามารถแยกไฟล์ได้สองไฟล์และจะไม่พบ ...