我有类似这样的文本文件:
Some-text
Keyword
Some-text
Some-text
Keyword
Some-text
Keyword
Keyword
我想用“number.extension”替换每个“关键字”,其中第一个关键字匹配时数字为 1,第二个关键字匹配时数字为 2 ,等等。
我知道我应该将 bash 循环与 sed 结合使用(sed 's:Keyword:Number:g'),但我不确定如何在该 sed 命令中插入数字变量。
由于这是 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'\''/'
对于更复杂的替换(例如涉及数学),更高级的脚本语言可能更合适。