RedGrittyBrick tem - apontado - as armadilhas de tentar analisar HTML de forma confiável.
Se, no entanto, seu HTML for tão bem formatado quanto você mostra, isso pode funcionar:
expr=
while read -r one two rest
do
expr="$expr; s/<uniquetag>$two<\/uniquetag>/<uniquetag>$two - $one<\/uniquetag>/"
done < file2
sed "$expr" sourcehtml > targethtml
... onde você pode, se estiver satisfeito com os resultados, altere a expressão sed
para:
sed -i "$expr" sourcehtml
... para que edite o arquivo sourcehtml no local.
Existem muitas maneiras pelas quais isso pode quebrar, algumas das quais são:
- uma das duas primeiras colunas do arquivo2 tem uma barra invertida ou uma aspa simples
- existem muitas linhas no arquivo2, fazendo com que a expressão sed se torne muito grande (contornando o sed várias vezes)
- as tags são maiúsculas de forma diferente de "uniquetag" (note que coloquei a tag de abertura na minha resposta; em maiúsculas, se estiver errado).
Execução de amostra
Dadas as suas primeiras três linhas de "arquivo2" e ...
sourcehtml:
<uniquetag>other</uniquetag>
<othertag>other</othertag>
<uniquetag>Mystring1</uniquetag>
<uniquetag>other</uniquetag>
<uniquetag>Mystring2</uniquetag>
<othertag>other</othertag>
<uniquetag>Mystring3</uniquetag>
<uniquetag>other</uniquetag>
<othertag>Mystring3</othertag>
A saída é:
<uniquetag>other</uniquetag>
<othertag>other</othertag>
<uniquetag>Mystring1 - Info1</uniquetag>
<uniquetag>other</uniquetag>
<uniquetag>Mystring2 - Info2</uniquetag>
<othertag>other</othertag>
<uniquetag>Mystring3 - Info3</uniquetag>
<uniquetag>other</uniquetag>
<othertag>Mystring3</othertag>