มีใครรู้บ้างเกี่ยวกับเครื่องมือที่ไม่ใช้บรรทัดในการค้นหา / แทนที่สตริงในวิธีที่ค่อนข้างมีประสิทธิภาพ ดูคำถามนี้ด้วย
ฉันมีไฟล์ข้อความ + 2GB ที่ฉันต้องการประมวลผลคล้ายกับสิ่งที่ดูเหมือนจะทำ:
sed -e 's/>\n/>/g'
ซึ่งหมายความว่าผมต้องการที่จะลบบรรทัดใหม่ทั้งหมดที่เกิดขึ้นหลังจากที่มีแต่ไม่ได้ทุกที่อื่นดังนั้นกฎที่ออกมา>tr -d
คำสั่งนี้ (ที่ฉันได้จากคำตอบของคำถามที่คล้ายกัน ) ล้มเหลวด้วยcouldn't re-allocate memory:
sed --unbuffered ':a;N;$!ba;s/>\n/>/g'
ดังนั้นมีวิธีการอื่นใดโดยไม่หันไปใช้ C? ฉันเกลียด Perl แต่ยินดีที่จะยกเว้นในกรณีนี้ :-)
ฉันไม่รู้ว่าตัวละครใดที่ไม่ได้เกิดขึ้นในข้อมูลดังนั้นการแทนที่\nด้วยอักขระอื่นชั่วคราวเป็นสิ่งที่ฉันต้องการหลีกเลี่ยงถ้าเป็นไปได้
มีความคิดที่ดีมีใครบ้าง?
--unbufferedหน่วยความจำไม่
$!ทำอย่างไร
$!เป็น ฉันคาดหวังว่าจะต้องมีหน่วยความจำจำนวนมาก
sedไม่ใช่เครื่องมือที่เหมาะสมในกรณีนี้
--unbufferedหรือยัง