Como deletar a linha após um padrão de busca, globalmente com o vi?

5

Suponha que eu tenha um arquivo grande, ~ 1k linhas, e eu preciso excluir a linha após algum padrão, vamos chamá-lo: somePatern .

Condições:

  • não pode ser feito manualmente (sem pesquisa - /somePattern e / ou manualmente movendo uma linha e excluindo).
  • preferencialmente um único revestimento.
  • linha após a linha que contém o padrão ter que ser eliminada (sem linha vazia)
  • tem que ser compatível com o UNIX (eu uso o Debian mas preciso dele para UNIX - ótimo se funciona em ambos)

Além disso, se alguém tiver um link para um site onde eu possa aprender isso e mais coisas de regex que sejam incríveis! (Mas não um tipo iniciante de tut, eu tenho isso para baixo, cortesia de vimtutor e outros.)

    
por krack krackerz 13.02.2012 / 10:18

2 respostas

8

g/somepattern/+d

No exemplo a seguir, o baz foi removido. (Eu só verifiquei com o Vim).

foo     
bar 
somepattern 
baz 
someotherpattern
    
por 13.02.2012 / 12:05
3

Dê uma olhada aqui na seção 3.2 "Faixa de Operação, Endereçamento de Linha e Marcas". Parece que os comandos do Vim podem aceitar um intervalo de linha na frente deles. Ao especificar o intervalo de linhas, você restringe a execução do comando somente a essa parte específica do texto.

Por exemplo:

/pattern[/] da próxima linha em que o texto "padrão" corresponde a

?pattern[?] da linha anterior em que o texto "padrão" corresponde a

    
por 13.02.2012 / 10:40

Tags