他のファイルへの参照を見つけて見つけるスクリプトをbashで作成しています(htmlファイル内のimgソース(image.jpg)への参照など)
問題は、(この例では) "/some/random/directory/image.jpg"を含むすべてのインスタンスを置き換えるために sed を使用していることです。
「some/random/directory/image.jpg」は毎回異なるため、sed行に関しては正規表現を使用する必要がありますが、置き換える行を見つけるにはimage.jpgを含める必要があります.
たとえば、私の sed 行は次のようになります
sed 's/\/some\/random\/directory\/image.jpg/images\/image.jpg/g'
しかし、どうすれば見つけたものの終わりを取得し、それを置換に入れることができますか? (この例ではimage.jpgになります。それを変数にする方法はありますか?
現在のスクリプトは次のとおりです。
#!/bin/bash
cd /home/username/www/immrqbe/
for file in $(grep -rlI ".jpg" *)
do
sed -e "s/\".*\/.*.jpg//ig" $file > /tmp/tempfile.tmp
mv /tmp/tempfile.tmp /home/username/www/immrqbe/$file
done
助けが必要なため、これは明らかに機能的に完全ではありませんが、どのように完成させたいかがわかります。