次のようなテキスト ファイルがあります。
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'\''/'
より複雑な置換 (数学が関係する場合など) の場合は、より高度なスクリプト言語の方が適している可能性があります。