มีเครื่องมือแก้ไขใดบ้างที่สามารถแก้ไขไฟล์ข้อความแบบหลายกิกะไบต์หรืออาจโดยการโหลดเฉพาะส่วนเล็ก ๆ ลงในหน่วยความจำในครั้งเดียว ดูเหมือนว่า Vim จะจัดการมันไม่ได้ = (
มีเครื่องมือแก้ไขใดบ้างที่สามารถแก้ไขไฟล์ข้อความแบบหลายกิกะไบต์หรืออาจโดยการโหลดเฉพาะส่วนเล็ก ๆ ลงในหน่วยความจำในครั้งเดียว ดูเหมือนว่า Vim จะจัดการมันไม่ได้ = (
คำตอบ:
ถ้าคุณอยู่ในระวัง * (และสมมติว่าคุณมีการปรับเปลี่ยนเพียงบางส่วนของไฟล์ (และไม่ค่อย)), คุณอาจแยกไฟล์ (โดยใช้split
คำสั่ง), แก้ไขพวกเขาที (ใช้awk
, sed
หรือสิ่งที่คล้ายกัน) และเชื่อมพวกเขาหลังจากที่คุณ เสร็จสิ้น.
cat file2 file3 >> file1
Ctrl-C จะหยุดการโหลดไฟล์ หากไฟล์มีขนาดเล็กพอคุณอาจโชคดีได้โหลดเนื้อหาทั้งหมดและเพิ่งฆ่าขั้นตอนการโหลดโพสต์ ตรวจสอบว่าโหลดทั้งไฟล์แล้วเมื่อใช้เคล็ดลับนี้
Vim สามารถจัดการไฟล์ขนาดใหญ่ได้ดี ฉันเพิ่งแก้ไขไฟล์ 3.4GB ลบบรรทัด ฯลฯ สามสิ่งที่ควรทราบ:
:115355
จะนำคุณไปยังบรรทัด 115355 ซึ่งเร็วกว่ามากในไฟล์ขนาดใหญ่เหล่านั้น Vim ดูเหมือนจะเริ่มการสแกนตั้งแต่เริ่มต้นทุกครั้งที่โหลดบัฟเฟอร์ของบรรทัดและกด Ctrl-F ค้างไว้เพื่อสแกนไฟล์ดูเหมือนว่าจะช้ามากเมื่อใกล้ถึงจุดสิ้นสุดหมายเหตุ - หากอินสแตนซ์ Vim ของคุณเป็นแบบอ่านอย่างเดียวเนื่องจากคุณกด Ctrl-C อาจเป็นไปได้ว่า Vim ไม่ได้โหลดไฟล์ทั้งหมดลงในบัฟเฟอร์ ถ้าเกิดว่าบันทึกจะบันทึกสิ่งที่อยู่ในบัฟเฟอร์ไม่ไฟล์ทั้งหมด คุณอาจตรวจสอบอย่างรวดเร็วด้วยการG
ข้ามไปยังจุดสิ้นสุดเพื่อให้แน่ใจว่าทุกบรรทัดในไฟล์ของคุณอยู่ที่นั่น
อาจเป็นปลั๊กอินที่ทำให้หายใจไม่ออก (การเน้นไวยากรณ์การพับ ฯลฯ )
คุณสามารถเรียกใช้กลุ่มโดยไม่ต้องใช้ปลั๊กอิน
vim -u "NONE" hugefile.log
เป็นแบบเรียบง่าย แต่อย่างน้อยก็ให้การเคลื่อนไหวแบบ vi ที่คุณคุ้นเคย
syntax off
เป็นอีกหนึ่งที่ชัดเจน ตัดการติดตั้งของคุณลงและจัดหาสิ่งที่คุณต้องการ คุณจะพบว่ามันมีความสามารถอะไรและหากคุณต้องการทำงานให้สำเร็จด้วยวิธีอื่น
การปรับปรุงคำตอบที่ได้รับจาก @Al pachio ด้วยโซลูชันแยก + เป็นกลุ่มคุณสามารถอ่านไฟล์ด้วย glob ได้อย่างมีประสิทธิภาพโดยใช้ส่วนไฟล์เป็นบัฟเฟอร์เช่น
$ split -l 5000 myBigFile
xaa
xab
xac
...
$ vim xa*
#edit the files
:nw #skip forward and write
:n! #skip forward and don't save
:Nw #skip back and write
:N! #skip back and don't save
คุณอาจต้องการตรวจสอบปลั๊กอิน VIMนี้ซึ่งปิดใช้งานคุณลักษณะกลุ่มบางอย่างเพื่อความรวดเร็วในการโหลดไฟล์ขนาดใหญ่
ฉันพยายามทำเช่นนั้นโดยส่วนใหญ่มีไฟล์ประมาณ 1 GB เมื่อฉันต้องการเปลี่ยนแปลงเล็กน้อยในการถ่ายโอนข้อมูล SQL ฉันใช้ Windows ซึ่งทำให้เจ็บปวดมาก เป็นเรื่องยากอย่างจริงจัง
คำถามที่ชัดเจนคือ "ทำไมต้องทำ" ผมสามารถบอกคุณได้จากประสบการณ์ต้องลองนี้มากกว่าหนึ่งครั้งคุณอาจจริงๆต้องการที่จะพยายามที่จะหาวิธีอื่น
แล้วคุณจะทำอย่างไร? มีไม่กี่วิธีที่ฉันเคยทำ บางครั้งฉันสามารถใช้ vim หรือ nano เพื่อเปิดไฟล์และฉันสามารถใช้มันได้ นั่นเป็นความเจ็บปวดที่ยากมาก แต่ได้ผล
เมื่อไม่ได้ผล (เช่นในกรณีของคุณ) คุณมีเพียงไม่กี่ตัวเลือก คุณสามารถเขียนโปรแกรมเล็ก ๆ น้อย ๆ เพื่อทำการเปลี่ยนแปลงที่คุณต้องการ (ตัวอย่างเช่นค้นหาและแทนที่) คุณสามารถใช้โปรแกรมบรรทัดคำสั่งที่อาจทำได้ (อาจทำได้ด้วย sed / awk / grep / etc?)
หากไม่ได้ผลคุณสามารถแบ่งไฟล์ออกเป็นชิ้น ๆ ได้ตลอดเวลา (บางอย่างเช่นการแยกเป็นตัวเลือกที่ชัดเจน แต่คุณสามารถใช้ head / tail เพื่อให้ได้ส่วนที่คุณต้องการ) จากนั้นแก้ไขส่วนที่ต้องการ และรวมตัวกันใหม่ในภายหลัง
เชื่อฉันเถอะว่าลองหาวิธีอื่น
ฉันใช้ vim 7.3.3 บน Win7 x64 กับปลั๊กอิน LargeFile โดย Charles Campbellเพื่อจัดการไฟล์ข้อความธรรมดาหลายกิกะไบต์ มันใช้งานได้ดีจริงๆ
ฉันหวังว่าคุณจะมาถูกทาง
ว้าวไม่เคยได้รับการทำให้หายใจไม่ออกแม้จะมี GB หรือสอง ฉันได้ยินมาว่า UltraEdit (บน Windows) และ BBEdit (บน Macs) เหมาะสำหรับไฟล์ที่มีขนาดใหญ่กว่า แต่ฉันไม่มีประสบการณ์ส่วนตัว
ในอดีตฉันเปิดไฟล์ถึง 3 gig ด้วยเครื่องมือนี้http://csved.sjfrancke.nl/
ฉันใช้โปรแกรมแก้ไข / วิวเวอร์ในตัวของ FAR Commander สำหรับไฟล์บันทึกขนาดใหญ่พิเศษ
ฉันใช้TextPadสำหรับไฟล์บันทึกขนาดใหญ่ซึ่งไม่มีขีด จำกัด บน
สิ่งเดียวที่ฉันสามารถใช้สำหรับบางอย่างเช่นนั้นคือโปรแกรมแก้ไข Mac hex ที่ฉันชอบคือ 0XED อย่างไรก็ตามนั่นคือไฟล์ที่ฉันคิดว่ามีขนาดใหญ่หลายสิบเมกะไบต์ ฉันไม่แน่ใจว่ามันจะไปได้ไกลแค่ไหน ฉันค่อนข้างแน่ใจว่ามันโหลดเฉพาะบางส่วนของไฟล์ลงในหน่วยความจำในครั้งเดียว
ในอดีตฉันใช้วิธีการแยก / แก้ไข / เข้าร่วมสำเร็จเมื่อไฟล์มีขนาดใหญ่มาก เพื่อให้ได้ผลคุณต้องทราบว่าข้อความที่จะแก้ไขอยู่ที่ใดในไฟล์ต้นฉบับ