Npm package.json中sed的使用问题
在npm项目的package.json中,我使用sed的方式如下:Npm package.json中sed的使用问题,npm,sed,package.json,Npm,Sed,Package.json,在npm项目的package.json中,我使用sed的方式如下: shx sed -i "s/'..\/node_modules\/x\/y\/z\/x.min';/'node_modules\/x\/y\/z\/x.min';/" src/styles/external/application.scss 它只需打印文件内容并进行适当替换。 当我从控制台尝试此操作而不转义时,它会正常工作。 如何进行适当的逃生以使其发挥作用?我也尝试了双重逃跑-\/ 并使用另一个分隔符-@
shx sed -i "s/'..\/node_modules\/x\/y\/z\/x.min';/'node_modules\/x\/y\/z\/x.min';/" src/styles/external/application.scss
它只需打印文件内容并进行适当替换。
当我从控制台尝试此操作而不转义时,它会正常工作。
如何进行适当的逃生以使其发挥作用?我也尝试了双重逃跑-\/
并使用另一个分隔符-@
\\/
)转义模式中路径名的所有正斜杠(/
)。如上文所述,其内容如下:
注意:与unixsed
一样,shx sed
将/
视为特殊字符,如果要在正则表达式或替换字符串中使用此字符,则将其视为shell中的\/
或包.json中的\/
)。不要在文件路径中转义/
字符
\“…\”
。。。
“脚本”:{
“替换”:“shx sed-i\'s/'\\\\/node_modules\\/x\\/y\\/z\\/x.min';/“node_modules\\\/x\\/y\\\/z\\\/x.min';/g\'src/styles/external/application.scss”
^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^
},
...
注意给定的npm脚本还包括g
标志
运行npm run replace
将替换以下所有实例:
在文件内容的src/styles/external/application.scss
中,包含以下内容:
你看过shx的文档了吗?--他们在这里提到了这个主题。是的:“注意:与unix sed一样,shx sed将/视为一个特殊字符,如果您打算在正则表达式或替换字符串中使用此字符,则必须对其进行转义(在shell中为\/或在package.json中为\/转义)。不要在文件路径中转义/字符。”-我已经写过了-双重转义-\\/谢谢。我得到了相同的解决方案,但认为“有问题”,因为我也在控制台中替换了输入文件的内容。
'../node_modules/x/y/z/x.min';
'node_modules/x/y/z/x.min';