ฉันมีไฟล์คั่นด้วยแท็บเช่น:
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 เพื่อใช้สำหรับการเคลื่อนไหว?
ดูสิ่งนี้ด้วย: