我正在尝试运行这个
sed -i -e "s/'(\${RConstants\.staticPath}\/dist\/img\/app\/icons\.svg#[a-z_-]*)'/`\1`/g" test
单引号版本
sed -i -e 's/'\''(\${RConstants\.staticPath}\/dist\/img\/app\/icons\.svg#[a-z_-]*)'\''/`$1`/g' test
测试文件内容:
useElem.setAttributeNS(null, 'href', '${RConstants.staticPath}/dist/img/app/icons.svg#rsvg__ui--play'); useElem.setAttributeNS(null, 'href', '${RConstants.staticPath}/dist/img/app/icons.svg#rsvg__ui--play');
useElem.setAttributeNS(null, 'href', '${RConstants.staticPath}/dist/img/app/icons.svg#rsvg__ui--play');
基本上,我需要用反引号替换单引号。
问题是我尝试sed
使用单引号和双引号执行命令,但每个命令都有自己的问题。
使用双引号,我得到了它1: command not found
,而使用单引号,它不会替换任何内容。
答案1
问题有 2 个:
未转义的反引号(用于产生新进程)未转义的括号,因此在修复反引号后,错误是由于没有捕获组。
sed -i -e "s/'\(\${RConstants\.staticPath}\/dist\/img\/app\/icons\.svg#[a-z_-]*\)'/\`\1\`/g" test
因此,一切顺利。