bash スクリプトの sed コマンドに変数を挿入する

bash スクリプトの sed コマンドに変数を挿入する

次のようなテキスト ファイルがあります。

Some-text
Keyword
Some-text
Some-text
Keyword
Some-text
Keyword
Keyword

すべての「キーワード」を「number.extension」に置き換えたいのですが、最初のキーワード一致では number は 1、2 番目のキーワード一致では 2 などになります。

bash ループを sed (sed 's:Keyword:Number:g') と組み合わせて使用​​する必要があることはわかっていますが、その sed コマンドで number の変数を挿入する方法がわかりません。

これは HTML ファイルなので、「キーワード」の間に空白行や任意のテキストを入れることができます。

答え1

編集済み: sedで変数を次のように使用できます。

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

答え2

これで望みどおりになりますか?

perl -pe '$n++ if /Some-text/;s/Keyword/SomeText '\''$n'\''/'

より複雑な置換 (数学が関係する場合など) の場合は、より高度なスクリプト言語の方が適している可能性があります。

関連情報