Удаление первого столбца с помощью vim

У меня есть текстовый файл.

number 1_1 \t number1_2 \t etc
number 2_1 \t number2_2 \t etc

Я хочу удалить первый столбец этого файла (соответствующий number1_1, number2_1 и т. д., то есть числа перед первой вкладкой для каждой строки). Я прочитал этот пост, в котором предлагается решение удалить первый столбец (см. Ответ Питера). Однако это не работает для меня, поскольку числа имеют разные размеры, и я не могу повторить операцию по удалению первого столбца. Как я могу это сделать?

1
задан 23 May 2017 в 15:39

4 ответа

Через awk,

awk -F"\t" '{print FS,$2}' file > newfile

Он разрезает первый столбец и печатает только оставшуюся вкладку и второй столбец.

Через sed,

[ f2]
4
ответ дан 24 May 2018 в 07:20

:%s/[^\t]*\t//

На каждой строке (%) замените (<code>/<em>ORIGINAL</em>/<em>REPLACEMENT</em>/</code>) the first occurrence of “non-tab characters ( [^ \ t] ) in any numbre ( * ) followed by a tab \ t ” by nothing. You can type <kbd>Tab</kbd> instead of \ t`.

В качестве альтернативы вы можете совместить кратчайшую последовательность символов (.\{-}), заканчивающуюся на вкладке. .*\t будет соответствовать наибольшему совпадению для .*, поэтому он будет соответствовать всем, кроме последнего столбца; .\{-} соответствует минимальному совпадению, которое является первым столбцом.

:%s/.\{-}\t//

3
ответ дан 24 May 2018 в 07:20

В Vi для удаления первого столбца (разделенного пробелом) вы можете сделать:

:%norm dW

для столбца, разделенного Tab, это:

:%norm df [d2 ] Tab Tab

Таким образом, команда, которая удалит первый столбец из файла (на месте), может быть:

ex +"%norm df$(echo -e '\t')" -scwq file

Чтобы проверить вывод перед сохранением ( (d6).

Или на основе предложения Криса, например:

ex -c':exe ":%norm df\<Tab>"' -sc'%p|q!' <(echo -e "a a\tb b\tc c")

Альтернативно сделать это в визуальный режим (если начинать с верхнего левого):

Введите визуальный блок Ctrl + v. Перейдите в конец и выберите первый столбец, нажав: G, E (или отрегулируйте вручную). Нажмите d, чтобы удалить выбранный блок.
3
ответ дан 24 May 2018 в 07:20

Чтобы удалить оставшееся пространство перед вторым столбцом, я предлагаю:

:%norm df Ctrl + VTab x

0
ответ дан 24 May 2018 в 07:20

Другие вопросы по тегам:

Похожие вопросы: