Eu tenho um arquivo de texto semelhante a este:
Some-text
Keyword
Some-text
Some-text
Keyword
Some-text
Keyword
Keyword
Quero substituir cada "Palavra-chave" por "número.extensão", onde o número é 1 na primeira correspondência de palavra-chave, 2 na segunda correspondência de palavra-chave, etc.
Eu sei que devo usar o loop bash combinado com sed (sed 's:Keyword:Number:g'), mas não tenho certeza de como inserir variável para número nesse comando sed.
Como se trata de um arquivo HTML, pode haver linhas em branco ou qualquer texto entre essas "Palavras-chave".
Responder1
Editado: você pode usar a variável em sed da seguinte maneira,
count=1
extension=".jpg"
cp yourfile tempfile
for (( i=1; i<=`wc yourfile | awk '{ print $1 }'`; i++))
do
#for (( j=1; j<=`sed -n ''"$i"' p' yourfile | wc | awk '{ print $2 }'`; j++))
#do
sed -i ''"$i"' s/[a-zA-Z0-9]*[Kk][Ee][Yy][Ww][Oo][Rr][Dd]/'"$count$extension"'/1' yourfile
diff yourfile tempfile
if [ $? -ne 0 ]
then
count=$(expr $count + 1)
cp yourfile tempfile
fi
#done
done
Responder2
Isso faz o que você quer?
perl -pe '$n++ if /Some-text/;s/Keyword/SomeText '\''$n'\''/'
Para substituições mais complicadas (por exemplo, quando há matemática envolvida), uma linguagem de script mais avançada pode ser mais adequada.