Usando sed :
sed -r 's#^([0-9]+),([0-9]+)$#http://www.cs.bu.edu/~betke/research/vc-crowd/MSCOCO/\.jpg,http://www.cs.bu.edu/~betke/research/vc-crowd/MSCOCO/\.jpg#' input-file
- redireciona a saída para um novo arquivo
> output-file; ou use a opção-i.bakpara fazer as alterações em seus locais e criar um arquivo de backup. -
-r,--regexp-extended- use expressões regulares estendidas no script. - o comando
ssignifica substituto:#<string-or-regexp>#<replacement>#. -
#é usado como delimitador - geralmente/desempenha esse papel, mas aqui temos muitas barras dentro do<replacement>, portanto, não precisamos escapar de cada uma delas. -
^corresponderá ao início da linha.$corresponderá ao final da linha. -
[0-9]+corresponderá a cada string que consiste em dígitos. - dentro do
<replacement>, os grupos de captura([0-9]+)serão tratados como as variáveise. -
\.é apenas um escape do significado especial do ponto.
Aqui está uma simplificação proposta por @dessert :
sed -r 's#([0-9]+)#http://www.cs.bu.edu/~betke/research/vc-crowd/MSCOCO/\.jpg#g' input-file
- aqui, assumimos que o formato do arquivo é homogêneo, como no exemplo, e não precisamos corresponder à linha inteira.
- o sinal
g(no final) repete a substituição de cada ocorrência da regex correspondida ao final da linha.
Além disso, é possível usar também variáveis para o URL base e para a extensão do arquivo:
URL='http://www.cs.bu.edu/~betke/research/vc-crowd/MSCOCO/'; EXT='.jpg'
sed -r "s#([0-9]+)#$URL$EXT#g" input-file
- Nota: aqui são usadas aspas duplas.