Isso faz o que você quer?
perl -pe '$n++ if /Some-text/;s/Keyword/SomeText '\''$n'\''/'
Para substituições mais complicadas (por exemplo, onde a matemática está envolvida), uma linguagem de script mais avançada pode ser mais adequada.
Eu tenho um arquivo de texto semelhante a este:
Some-text
Keyword
Some-text
Some-text
Keyword
Some-text
Keyword
Keyword
Eu quero substituir cada "Keyword" por "number.extension", em que number é 1 na primeira correspondência de palavra-chave, 2 na segunda correspondência de palavra-chave, etc.
Eu sei que devo usar o laço bash combinado com sed (sed: s: Keyword: Number: g '), mas não tenho certeza de como inserir variável para number nesse comando sed.
Como este é um arquivo HTML, pode haver linhas em branco ou qualquer texto entre as "Palavras-chave".
Isso faz o que você quer?
perl -pe '$n++ if /Some-text/;s/Keyword/SomeText '\''$n'\''/'
Para substituições mais complicadas (por exemplo, onde a matemática está envolvida), uma linguagem de script mais avançada pode ser mais adequada.
Editado: você pode usar a variável em sed da seguinte forma,
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