วิธีดูไฟล์ข้อความขนาดใหญ่ผ่าน Vi หรือ gedit


24

ผมได้สร้างwordlist.txt11 GB crunch-3.6โดย เมื่อฉันพยายามเปิดไฟล์ด้วย Vi หรือ gedit ฉันพบปัญหาเนื่องจากขนาดไฟล์ ฉันจะดูไฟล์นี้ได้อย่างไร?


8
ฉันไม่คิดว่ามันจะซ้ำกัน แม้ว่ามันจะเกี่ยวข้องกันอย่างใกล้ชิดและคำตอบบางอย่างอาจเป็นประโยชน์ แต่อันนี้เกี่ยวกับการดูและไม่แก้ไข คำตอบที่ยอมรับไม่เป็นประโยชน์สำหรับการดู
pLumo

1
ฉันเห็นด้วย. การดูไฟล์และการแก้ไขไฟล์นั้นไม่เหมือนกันและความแตกต่างจะมีความสำคัญมากกว่าเมื่อไฟล์มีขนาดใหญ่มาก
Eliah Kagan

คำตอบ:


43

อย่าใช้โปรแกรมแก้ไขข้อความเพื่อดูข้อความ

มีเครื่องมือที่ดีกว่า:


ดูไฟล์ด้วยless(เลื่อนด้วย Space, End, Home, PageUp, PageDown; ค้นหาด้วย "/ something"; Leave with q)

จากlessคู่มือ:

Less ไม่จำเป็นต้องอ่านไฟล์อินพุตทั้งหมดก่อนที่จะเริ่มดังนั้นด้วยไฟล์อินพุตขนาดใหญ่มันจะเริ่มต้นเร็วกว่าโปรแกรมแก้ไขข้อความเช่น vi (1)

การใช้งาน:

less wordlist.txt

พิจารณาการใช้less -n:

-n หรือ - หมายเลขบรรทัด:

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

(ขอบคุณสำหรับการแนะนำ -n ตัวเลือก @pipe)


ใช้grepเพื่อรับเฉพาะบรรทัดที่คุณสนใจ:

# Show all Lines beginning with A:
grep "^A:"  wordlist.txt

# Show all Lines ending with x and use less for better viewing
grep "x$"  wordlist.txt | less

ใช้headหรือtailเพื่อรับบรรทัดแรกหรือบรรทัดสุดท้าย

head wordlist.txt
tail -n 200 wordlist.txt

สำหรับการแก้ไขข้อความอ้างอิงถึงคำถามนี้


4
โปรดทราบว่าmoreจะโหลดไฟล์ทั้งหมดในหน่วยความจำไม่เหมือนlessกัน ถ้ามันใหญ่ขนาดนั้นฉันจะแนะนำให้ใช้ grepเลือกที่ดีที่สุดแน่นอนจะใช้
Nepho

1
ความคิดเห็นของฉันอาจเป็นเท็จ ฉันเริ่มต้นการตรวจสอบทั้งในmoreและlessรหัสแหล่งที่มาและทั้งสองดูเหมือนจะใช้อย่างใดอย่างหนึ่งopenหรือfopenซึ่งไม่ได้เปลี่ยนแปลงอะไรเกี่ยวกับวิธีการที่ไฟล์ที่จะโหลดเท่าที่ฉันรู้
Nepho

2
ตกลง moreเป็นสาธารณูปโภควันมากถ้าใช้ได้ผมไม่คิดว่าจะด้วยเหตุผลใดเหตุผลที่คุณต้องการใช้less more
Nepho

1
@Nepho moreมีข้อได้เปรียบอย่างมากที่เหนือกว่าless: ไม่รองรับLESSOPENตัวประมวลผลล่วงหน้าอินพุต หากคุณพยายามที่จะดูข้อความต้นฉบับของหน้าคนหรือบางสิ่งบางอย่างมันจะเร็วmore my_docs.manกว่าการขุดผ่านlessเอกสารเพื่อหาวิธีที่จะปราบปรามตัวประมวลผลล่วงหน้า
ทำเครื่องหมาย

1
ฉันแนะนำให้เรียกใช้น้อยลงโดยใช้บางสิ่งบางอย่างเช่นless -nSไฟล์ขนาดใหญ่เพื่อเร่งความเร็วของสิ่งเล็ก ๆ น้อย ๆ
ท่อ

10

บ่อยครั้งที่ "grep" ก็เพียงพอที่จะค้นหาสิ่งที่คุณต้องการ

หากคุณต้องการ "บริบท" เพิ่มเติมรอบ ๆ บรรทัดหนึ่งให้ใช้ "grep -n" เพื่อค้นหาหมายเลขบรรทัดของบรรทัดที่สนใจแล้วใช้ sed เพื่อพิมพ์ "กลุ่ม" ของไฟล์รอบบรรทัดนั้น:

$ grep -n 'word' file 
123:A line with with word in it 

$ sed -n '120,125p' file 
A line 
Another line
The line before
A line with with word in it 
The line after
Something else

10
ไม่จำเป็นต้องมี sed คุณสามารถใช้grep -Bและ-A พิมพ์บรรทัดB efore และA fter ...
pLumo

7
@RoVo หรือ-CสำหรับCก้อนใหญ่ (ทั้งก่อนและหลัง)
wjandrea
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.