sedを使用した文字列の置き換え

sedを使用した文字列の置き換え

私が書いているスクリプトには2つのbash変数があります。

num1=site_2734
num2=796

文字列を含む svg ファイルを読み取る必要があります。

http://xxx-xxx.xxx.com/var/site_2734/storage/issues/796/svg/img/page-002-img1.jpg?q=80

最初の部分を「None」に置き換えて「?q=10」を削除して、次のようにしたいと思います。

page-002-img1.jpg

だから私はsedでこれを試しましたが、うまくいきませんでした。

sed -i -e 's/\(http:\/\/xxx-xxx.xxx.com\/var\/$num1\/storage\/issues\/$num2\/svg\/img/\).*\(\)/\1\2/'

どんな助けでも大変感謝します。

答え1

ファイル名自体にスラッシュや疑問符が含まれていないことを知ることは非常に簡単です。

sed --in-place 's_http.*/img/\(.*\)?q=[0-9][0-9]*_\1_' inputfile

サイト番号と発行番号が必要な場合は、コマンドを組み合わせてsed変数として実装できます。

sedcmd='s_http.*'$num1'.*'$num2'.*/img/\(.*\)?q=[0-9][0-9]*_\1_'
sed --in-place "$sedcmd" inputfile

関連情報