Tôi có một tệp được phân định bằng tab như:
name1 verb1 name2 verb2 etc...
Tôi muốn xóa cột thứ hai. Tôi đã thử chỉnh sửa một trong những câu trả lời này , nhưng không quen thuộc sedvà awk, tôi không thể.
Ai giúp tôi với?
xđể xóa)?
Tôi có một tệp được phân định bằng tab như:
name1 verb1 name2 verb2 etc...
Tôi muốn xóa cột thứ hai. Tôi đã thử chỉnh sửa một trong những câu trả lời này , nhưng không quen thuộc sedvà awk, tôi không thể.
Ai giúp tôi với?
xđể xóa)?
Câu trả lời:
Trong vim, bạn sẽ có thể sử dụng lệnh
:%s/\t[^\t]*//
(thay thế TABtheo sau bằng 0 hoặc nhiều lần xuất hiện của bất kỳ ký tự nào trừ TABkhi không có gì). Nếu tệp của bạn chỉ có hai cột, bạn có thể sử dụng đơn giản hơn một chút :%s/\t.*hoặc :%s/\t.*$thay thế các ký tự đầu tiên TABvà bất kỳ ký tự nào sau cho đến cuối dòng.
Câu trả lời được chấp nhận thanh lịch hơn nhiều so với câu trả lời này (tôi đã nâng cấp nó!) Nhưng nếu bạn không nhớ nó, bạn có thể sử dụng vim chế độ khối trực quan. Mở vim và đi (chế độ bình thường) đến góc đầu tiên của cột, như thế này:

Nhập CTRL-Vvà bạn có thể di chuyển con trỏ để chọn cột, đây là giữa chừng:

Để đi đến cuối, nhấn G:

khối dường như bị hỏng vì chúng tôi đang ở dòng cuối cùng trống; chỉ cần đi lên một dòng (với mũi tên lên hoặc k) để xem lại ...:

Bây giờ bạn chỉ cần nhấn xđể xóa khối:

Tôi sẽ sử dụng cutcho việc này
cut -f1,3- file.txt > newfile.txt
mv newfile.txt file.txt
Bạn cũng có thể sử dụng bộ lọc này làm bộ lọc trong vim (điều này sẽ thay thế tất cả các dòng trong tệp; bạn cũng có thể sử dụng (ví dụ) 2,9thay vì %xử lý các dòng 2-9 hoặc chọn các dòng bạn muốn V):
:%!cut -f1,3-
-f1,3-có nghĩa là 'trường in một, theo sau là trường ba và tất cả các trường cho đến hết hàng'. Theo mặc định, cutsử dụng một tab làm dấu phân cách của nó; nếu bạn cần một cái gì đó khác, sử dụng -dtùy chọn (xem man cut).
Bạn có thể thử một trong hai:
:%norm WdW
hoặc bằng tay sử dụng chế độ trực quan:
Để thực hiện tại chỗ từ dòng lệnh, hãy thử:
$ ex +':exe ":%norm f\<Tab>dE"' -scx file
Liên quan: Làm thế nào để viết chữ cho phím Tab để sử dụng cho chuyển động?
Xem thêm: