У меня есть файл с разделителями табуляции:
name1 verb1 name2 verb2 etc...
Я хочу удалить второй столбец. Я попытался отредактировать один из этих ответов, но, не знакомый с sed и awk, я не смог.
Кто-нибудь может мне помочь?
Принимаемый ответ гораздо более изящный, чем этот (я его поддержал!), но если вы его не помните, вы можете напрямую использовать режим визуального блока vim. Откройте vim и перейдите (обычный режим) в первый угол столбца, например:
Введите CTRL-V, и вы можете переместить курсор, чтобы выбрать столбец, это midway:
Чтобы перейти в конец, нажмите G:
блок кажется сломанным, потому что мы на последней строке, которая пуста; просто перейдите на одну строку (со стрелкой вверх или k), чтобы увидеть ее снова ...:
Теперь вы просто нажимаете x для удаления блока:
Я использовал бы cut для этого
cut -f1,3- file.txt > newfile.txt
mv newfile.txt file.txt
. Вы можете использовать это как фильтр внутри vim (это заменит все строки в файле, вы также можете использовать (например ) 2,9 вместо % для обработки строк 2-9 или выберите нужные строки с помощью V):
:%!cut -f1,3-
-f1,3- означает «поле печати одно», за которым следует поле три и все поля до конца строки ». По умолчанию cut использует вкладку в качестве разделителя; если вам нужно что-то еще, используйте опцию -d (см. man cut).
Вы можете попробовать:
:%norm WdW
или вручную с помощью визуального режима:
Переход во второй столбец (например, нажатием: W). Начните визуальный блок с помощью Ctrl + v. Выберите второй столбец (например, нажав: W, G). Удалите его, нажав d.Чтобы сделать это на месте из командной строки, попробуйте:
$ ex +':exe ":%norm f\<Tab>dE"' -scx file
Связано: Как написать литерал для клавиши Tab для использования для движения ?
См. также:
Удалить конкретный столбец в VIM / gvim без использования режима Visual Block