sed-命令行中的替换组双引号

sed-命令行中的替换组双引号

我正在尝试运行这个

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

因此,一切顺利。

相关内容