ฉันจะแก้ไขไฟล์ขนาดใหญ่ได้อย่างไร


18

ฉันมีขนาดไฟล์ไม่เกิน> 1 GB ต่อไฟล์ ฉันต้องการลบสองสามไบต์สุดท้ายออกจากไฟล์ ฉันจะทำมันได้อย่างไร ฉันชอบที่จะแก้ไขไฟล์เพื่อประหยัดพื้นที่ดิสก์

ฉันใช้ HP-UX


ฉันคิดว่าvimมีขีด จำกัด 4G (อาจผิด) แต่ฉันไม่คิดว่ามันจะเข้าแทนที่ (อาจผิด)
xenoterracide

1
@xenoterracide: ฉันไม่ได้เป็นกลุ่มที่นี่ :-( และ vi ให้ "แฟ้ม Tmp ขนาดใหญ่เกินไป" ข้อผิดพลาด.
Hemant

1
@Hernant: ข้อความนั้นบอกทุกสิ่งที่คุณจำเป็นต้องรู้เกี่ยวกับการแก้ไขในสถานที่: vi พยายามที่จะคัดลอกไปยัง / tmp เพื่อทำงาน ฉันคิดว่าเป็นกลุ่มจะทำสิ่งเดียวกันและมันก็เหมือนการสร้างการสำรองข้อมูลในไดเรกทอรีเดียวกัน
David Thornley

คำตอบ:


10

ลองใช้hexeditฉันไม่ได้ลองใช้กับ HP-UX แต่มันน่าจะใช้ได้ ช่วยให้คุณย้ายไปยังตำแหน่งในไฟล์และตัดทอน ฉันค่อนข้างแน่ใจว่ามันไม่ได้อ่านไฟล์ทั้งหมด แต่เพียงแค่ค้นหาตำแหน่งที่เหมาะสมสำหรับการแสดงผล

การใช้งานค่อนข้างง่ายเมื่อคุณเปิดใช้งานแล้วปุ่มลูกศรให้คุณเลื่อนไปรอบ ๆ F1 ให้ความช่วยเหลือ Ctrl-G ย้ายไปยังตำแหน่งในไฟล์ (คำแนะนำ: เพื่อเลื่อนไปยังปลายทางใช้ขนาดของไฟล์จากแถวด้านล่างของจอแสดงผล) วางเคอร์เซอร์บนไบต์แรกที่คุณต้องการตัดทอนแล้วกด Escape T เมื่อคุณยืนยันว่าการตัดทอนจะเสร็จสิ้น ออกจาก Ctrl-x



6

คุณสามารถใช้ dd ตัวอย่างเช่น:

dd if=yourfile of=outname bs=4k count=thefirstX4kb

1
ขอบคุณสำหรับคำตอบของคุณ ฉันชอบที่จะแก้ไขไฟล์เพื่อประหยัดพื้นที่ดิสก์ หากไม่มีอะไรช่วยฉันจะใช้ dd :-)
Hemant

6

ใช้เครื่องมือที่ช่วยให้คุณเข้าถึงการtruncateโทรของระบบ คุณสามารถทำได้ด้วยเครื่องมือ POSIX เท่านั้น คำเตือนพิมพ์ลงในเบราว์เซอร์ ระมัดระวังโดยเฉพาะอย่างยิ่งเช่นเดียวกับการddให้อภัยข้อผิดพลาดมากกว่าคำสั่ง unix ปกติ 123456 คือจำนวนไบต์ที่จะเก็บ

dd if=/dev/null of=/file/to/truncate seek=1 bs=123456

รุ่น Perl สามารถอ่านได้มากขึ้น:

perl -e 'truncate "$ARGV[0]", 123456 or die $!' /file/to/truncate

1

คุณสามารถใช้splitหรือed, awkหรือภาษาเขียนโปรแกรมใด ๆ


ขอบคุณสำหรับคำตอบของคุณ ฉันชอบที่จะแก้ไขไฟล์เพื่อประหยัดพื้นที่ดิสก์และหน่วยความจำ
Hemant
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.