Insertar variable en el comando sed en el script bash

Insertar variable en el comando sed en el script bash

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.

información relacionada