ฉันจะลบข้อความทั้งหมดในบรรทัดจากบรรทัดปัจจุบันถึงจุดสิ้นสุดไฟล์ได้อย่างไร?


213

ฉันมีไฟล์ที่มีขนาดใหญ่มาก (มากกว่า 10Gb) ฉันต้องการเพียงบางบรรทัดจากด้านบนของไฟล์ เป็นไปได้ (เป็นกลุ่ม) เพื่อลบส่วนที่เหลือของไฟล์ (จากบรรทัดปัจจุบันถึงจุดสิ้นสุดไฟล์)?


12
ฉันรู้ว่าคุณต้องการที่จะใช้เป็นกลุ่ม แต่ฉันทำคำสั่งเปลือกเช่น: head -n <number_of_lines> <filename> > <truncated_filename> ไหน-nเป็นพารามิเตอร์สำหรับจำนวนของสายที่คุณต้องการจากด้านบน
EhevuTov

คำตอบ:


365

dG จะลบจากบรรทัดปัจจุบันไปยังจุดสิ้นสุดไฟล์

dCtrl+ Endจะลบจากเคอร์เซอร์ไปที่ท้ายไฟล์

แต่ถ้าไฟล์นี้มีขนาดใหญ่เท่าที่คุณพูดคุณอาจจะดีกว่าที่จะอ่านสองสามบรรทัดแรกheadแทนที่จะแก้ไขและบันทึกไฟล์

head hugefile > firstlines

(ถ้าคุณอยู่บน Windows คุณสามารถใช้พอร์ต Win32 ของhead)


17
คุณสามารถระบุจำนวนบรรทัดที่headจัดหาด้วยเช่น: head -n20 hugefileสำหรับ 20 บรรทัดแรก n เป็นค่าเริ่มต้นถึง 10
drevicko

3
ต้องการแรงจูงใจheadหรือ? การใช้ dG ในไฟล์ขนาดใหญ่ (1G +) ใช้เวลานาน (เช่น 5 นาที)
BurninLeo

3
สำหรับผู้ที่กำลังมองหาการสนทนาdggจะถูกลบจากบรรทัดปัจจุบันไปยังจุดเริ่มต้นของไฟล์
stevesliva

d Ctrl + End ใช้งานไม่ได้สำหรับฉัน d Shift + End ทำได้แม้ว่าจะลบจากเคอร์เซอร์ไปที่ท้ายบรรทัด
lightwing


30

:.,$d

การดำเนินการนี้จะลบเนื้อหาทั้งหมดออกจากบรรทัดปัจจุบันจนถึงจุดสิ้นสุดของไฟล์ สิ่งนี้มีประโยชน์มากเมื่อคุณจัดการกับการสร้างเวกเตอร์หรือการลอกแบบทดสอบ


2
ฉันชอบที่จะควบคุมบรรทัดเริ่มต้นให้มากขึ้นดังนั้นฉันจึงใช้: :<line number>,$dตัวอย่างเช่น: :3,$dจะลบจากบรรทัดที่ 3 ไปยังจุดสิ้นสุดของไฟล์
emont01

0

เพียงเพิ่มวิธีอื่นในโหมดปกติพิมพ์ctrl+vจากนั้นGเลือกส่วนที่เหลือจากนั้นDฉันไม่คิดว่ามันจะมีประสิทธิภาพคุณควรทำเช่น @Ed Guiness, ชื่อไฟล์ -n 20> ใน linux

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