Como deletar a segunda coluna no Vim?

10

Eu tenho um arquivo delimitado por tabulações como:

name1   verb1   name2   verb2   etc...

Eu quero excluir a segunda coluna. Eu tentei editar uma das essas respostas , mas não estar familiarizado com sed e awk , não consegui.

Alguém pode me ajudar?

    
por teaLeef 02.10.2014 / 05:55

4 respostas

8

No vim, você deve poder usar o comando

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

(substitua TAB seguido por zero ou mais ocorrências de qualquer caracter exceto TAB com nada). Se o seu arquivo tiver apenas duas colunas, você pode usar um :%s/\t.* ou :%s/\t.*$ um pouco mais simples, que substitui os seguintes TAB e qualquer caracteres a seguir até o final da linha .

    
por steeldriver 02.10.2014 / 07:21
16

A resposta aceita é muito mais elegante do que isso (eu inventei isso!), mas se você não se lembra, você pode usar vim modo de bloqueio visual diretamente. Abra o vim e vá (modo normal) para o primeiro canto da coluna, assim:

Digite CTRL-V e você pode mover o cursor para selecionar a coluna, a meio caminho:

Para ir no final, pressione G :

o bloco parece estar quebrado porque estamos na última linha que está em branco; basta subir uma linha (com a seta para cima ou k ) para ver de novo ...:

Agora, basta pressionar x para excluir o bloco:

    
por Rmano 02.10.2014 / 17:49
6

Eu usaria cut para isso

cut -f1,3- file.txt > newfile.txt
mv newfile.txt file.txt

Você também pode usar isso como um filtro no vim (isso substituirá todas as linhas do arquivo; você também pode usar (por exemplo) 2,9 em vez de % para processar linhas 2-9 ou selecionar as linhas que você quer com V ):

:%!cut -f1,3-

-f1,3- significa 'imprimir um campo, seguido pelo campo três e todos os campos até o final da linha'. Por padrão, cut usa uma guia como seu delimitador; Se você precisar de algo mais, use a opção -d (consulte man cut ).

    
por evilsoup 02.10.2014 / 09:53
1

Você pode tentar:

:%norm WdW

ou manualmente usando o modo visual:

  1. Salte para a segunda coluna (por exemplo, pressionando: W ).
  2. Inicie o bloqueio visual por Ctrl + v .
  3. Selecione a segunda coluna (por exemplo, pressionando: W , G ).
  4. Exclua pressionando d .

Para fazer isso no local a partir da linha de comando, tente:

$ ex +':exe ":%norm f\<Tab>dE"' -scx file

Relacionados: Como escrever literalmente a tecla Tab para usar em movimento?

Veja também:

por kenorb 18.10.2015 / 15:18

Tags