使用sed向指定路径插入manifests/失败,寻求技术解决方案
解决方案
1. 使用sed命令批量替换
要将所有smashdocs/backend/sd[0-9]+格式的路径修改为smashdocs/backend/manifests/sd[0-9]+,需用替换模式而非插入模式,正确命令如下:
直接修改目标文件
sed -i 's/smashdocs\/backend\/sd\([0-9]*\)/smashdocs\/backend\/manifests\/sd\1/g' 你的文件名
命令解释
s/原模式/替换模式/g:sed的全局替换语法,g确保替换所有匹配项smashdocs\/backend\/sd\([0-9]*\):匹配smashdocs/backend/sd后跟任意数字的路径,\([0-9]*\)作为捕获组保留后续数字部分smashdocs\/backend\/manifests\/sd\1:替换为目标路径,\1引用前面捕获到的数字内容
先预览替换效果(不修改原文件)
sed 's/smashdocs\/backend\/sd\([0-9]*\)/smashdocs\/backend\/manifests\/sd\1/g' 你的文件名
2. 在Vim编辑器中替换
若在Vim内操作,执行以下命令:
:%s/smashdocs\/backend\/sd\([0-9]*\)/smashdocs\/backend\/manifests\/sd\1/g
%表示对所有行执行替换操作- 替换逻辑与sed命令一致
原命令失效原因
你之前使用的/sd/i manifests是在匹配到"sd"的行上方插入一行manifests ,并非在路径中间插入目录,完全不符合需求,因此没有生效。
内容的提问来源于stack exchange,提问作者Andrew
相关产品推荐
相关产品推荐

