使用 sed 替换字符串

使用 sed 替换字符串

我正在构建的脚本中有两个 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

我想用“无”替换第一部分并删除“?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

相关内容