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
), substituindoFOO
porBAR
. -
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 argumentosed
com'
, esse script escapa da linha'
s com'\''
.