Tengo un archivo de texto similar a este:
Some-text
Keyword
Some-text
Some-text
Keyword
Some-text
Keyword
Keyword
Quiero reemplazar cada "Palabra clave" con "número.extensión", donde el número es 1 en la primera coincidencia de palabra clave, 2 en la segunda coincidencia de palabra clave, etc.
Sé que debería usar el bucle bash combinado con sed (sed 's:Palabra clave:Número:g'), pero no estoy seguro de cómo insertar una variable para el número en ese comando sed.
Como se trata de un archivo HTML, puede haber líneas en blanco o cualquier texto entre esas "Palabras clave".
Respuesta1
Editado: puede usar la variable en sed de la siguiente manera,
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
Respuesta2
¿Hace esto lo que quieres?
perl -pe '$n++ if /Some-text/;s/Keyword/SomeText '\''$n'\''/'
Para reemplazos más complicados (por ejemplo, cuando están involucradas las matemáticas), un lenguaje de programación más avanzado podría ser más adecuado.