ฉันมีขนาดใหญ่ (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>สามารถแยกไฟล์ได้สองไฟล์และจะไม่พบ ...