numerar sequencialmente uma linha de imagens ligadas com o vim ou outro?

0

Eu tenho mais de 400 linhas de html contendo este código para imagens:

<a class='gallery' href="galimages/boards/board34.jpg" alt="board large"><image src ="galimages/boards/thumbs/34.jpg" alt="board thumb"></a>

O primeiro lote são imagens de tabuleiro e vão do número 34 ao 160.

Existe uma maneira de programá-los numericamente, porque cada linha de código é idêntica, exceto pelos números?

Eu estou no Centos 7 e uso o editor vim normalmente.

    
por cea 17.03.2016 / 05:29

1 resposta

3

Solução Vim

Algumas sugestões aqui . Eu criaria a lista de números e depois substituiria o resto da string em torno deles. Acho essa estratégia mais fácil, já que você gostaria de dois de cada número. Por exemplo, em um documento vazio:

:put =range(34,160)
:%s,\(.*\),<a class='gallery' href="galimages/boards/board.jpg" alt="board large"><image src ="galimages/boards/thumbs/.jpg" alt="board thumb"></a>

N.B. put cria uma linha vazia na primeira linha, então você terá que deletar isso manualmente.

Explicação

  • :put =range(34,160) : crie um intervalo de números de 34 a 160, um em cada linha. Conforme observado, isso na verdade inicia o documento com uma linha em branco, portanto, exclua-o manualmente agora ou mais tarde.
  • :%s,FOO,BAR : Em todo o documento ( % ), pesquise e substitua ( s ), substituindo FOO por BAR .
  • FOO : \(.*\) . Substitua a linha inteira ( .* ), mas armazene o conteúdo (número) em um grupo de captura, ou seja, \(...\) .
  • BAR : substitua pela string conforme necessário, usando o número em dois locais ( ), para criar as linhas finais.

Solução da Shell

Você pode usar uma estratégia semelhante no shell sem usar vim .

$ seq 34 160 | sed 's,\(.*\),<a class='\''gallery'\'' href="galimages/boards/board.jpg" alt="board large"><image src ="galimages/boards/thumbs/.jpg" alt="board thumb"></a>,'

Explicação

  • seq 34 160 : crie um intervalo de números de 34 a 160, um em cada linha.
  • sed… : substitua como acima. N.B. já que cito o argumento sed com ' , esse script escapa da linha ' s com '\'' .
por 17.03.2016 / 05:38

Tags