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