ฉันมีไฟล์คั่นด้วยแท็บเช่น:
name1 verb1 name2 verb2 etc...
ฉันต้องการลบคอลัมน์ที่สอง ฉันพยายามแก้ไขหนึ่งในคำตอบเหล่านี้แต่ไม่คุ้นเคยsed
และawk
ฉันทำไม่ได้
มีใครช่วยฉันบ้าง
x
เพื่อลบ)?
ฉันมีไฟล์คั่นด้วยแท็บเช่น:
name1 verb1 name2 verb2 etc...
ฉันต้องการลบคอลัมน์ที่สอง ฉันพยายามแก้ไขหนึ่งในคำตอบเหล่านี้แต่ไม่คุ้นเคยsed
และawk
ฉันทำไม่ได้
มีใครช่วยฉันบ้าง
x
เพื่อลบ)?
คำตอบ:
ในกลุ่มคุณควรใช้คำสั่ง
:%s/\t[^\t]*//
(แทนที่TABแล้วตามด้วยเหตุการณ์ที่เกิดขึ้นเป็นศูนย์หรือมากกว่าของตัวละครใด ๆ ยกเว้นTABไม่มีอะไร) หากไฟล์ของคุณมีเพียงสองคอลัมน์คุณสามารถใช้ง่ายกว่าเล็กน้อย:%s/\t.*
หรือใช้:%s/\t.*$
แทนอักขระตัวแรกTABและตัวใดตัวหนึ่งต่อไปนี้จนถึงท้ายบรรทัด
คำตอบที่ได้รับการยอมรับนั้นมีความหรูหรามากกว่านี้ (ฉันโหวตขึ้น!) แต่ถ้าคุณจำไม่ได้คุณสามารถใช้vim
โหมดบล็อกภาพได้โดยตรง เปิดเป็นกลุ่มและไป (โหมดปกติ) ไปที่มุมแรกของคอลัมน์เช่นนี้
พิมพ์CTRL-V
และคุณสามารถเลื่อนเคอร์เซอร์เพื่อเลือกคอลัมน์นี่คือกึ่งกลาง:
หากต้องการไปยังจุดสิ้นสุดให้กดG
:
ดูเหมือนว่าบล็อกจะขาดเพราะเราอยู่ในบรรทัดสุดท้ายซึ่งว่างเปล่า เพียงขึ้นไปหนึ่งบรรทัด (ด้วยลูกศรขึ้นหรือk
) เพื่อดูอีกครั้ง ... :
ตอนนี้คุณเพียงกดx
เพื่อลบบล็อก:
ฉันจะใช้cut
สำหรับสิ่งนี้
cut -f1,3- file.txt > newfile.txt
mv newfile.txt file.txt
คุณสามารถใช้สิ่งนี้เป็นตัวกรองภายในกลุ่มได้เช่นกัน (สิ่งนี้จะแทนที่บรรทัดทั้งหมดในไฟล์คุณสามารถใช้ (ตัวอย่าง) 2,9
แทน%
การประมวลผลบรรทัดที่ 2-9 หรือเลือกบรรทัดที่คุณต้องการด้วยV
):
:%!cut -f1,3-
-f1,3-
หมายถึง 'ฟิลด์พิมพ์หนึ่งแล้วตามด้วยฟิลด์สามและฟิลด์ทั้งหมดจนกระทั่งสิ้นสุดแถว' โดยค่าเริ่มต้นให้cut
ใช้แท็บเป็นตัวคั่น หากคุณต้องการอย่างอื่นใช้-d
ตัวเลือก (ดูman cut
)
คุณสามารถลอง:
:%norm WdW
หรือด้วยตนเองโดยใช้โหมดภาพ:
ในการดำเนินการแทนที่จากบรรทัดคำสั่งให้ลอง:
$ ex +':exe ":%norm f\<Tab>dE"' -scx file
ที่เกี่ยวข้อง: วิธีการเขียนตัวอักษรสำหรับคีย์ Tab เพื่อใช้สำหรับการเคลื่อนไหว?
ดูสิ่งนี้ด้วย: