[英]sed replace dot dot slash, but e s slash got replace
OS : Debian Jessie 64 操作系统:Debian Jessie 64
sed (GNU sed) 4.2.2 sed(GNU sed)4.2.2
I have to replace my path from ../ to ../../ 我必须替换从../到../../的路径
Testing file. 测试文件。
$ cat dot.js
path = '../'
I put backslash in front of slash to put in the single quote: 我将反斜杠放在斜杠前面以添加单引号:
sed -i 's/..\//..\/..\//g' dot.js
Output : 输出:
path = '../../'
However, when I use with my actual file. 但是,当我使用实际文件时。
$ cat dotdot.js
var real_questionHandler = require('../routes/questionHandler_delqid.js');
var questionHandler_delqid = proxyquire('../routes/questionHandler_delqid.js', { 'pg' : pgStub} );
Output : 输出:
var real_questionHandler = require('../../rout../../questionHandler_delqid.js');
var questionHandler_delqid = proxyquire('../../rout../../questionHandler_delqid.js', { 'pg' : pgStub} );
How can I protect second position of each line from replacement? 如何保护每条线的第二位置不被更换?
You need to escape all the dots so that it would match the literal dot character or otherwise , unescaped dot would match any character. 您需要转义所有点,以使其与文字点字符匹配,否则,未转义的点将与任何字符匹配。 So that your regex matches
../
as well as es/
这样您的正则表达式匹配
../
以及es/
sed -i 's/\.\.\//..\/..\//g' dot.js
or 要么
sed -i 's~\.\./~../../~g' dot.js
Example: 例:
$ echo "require('../routes/questionHandler_delqid.js');" | sed 's~\.\./~../../~g'
require('../../routes/questionHandler_delqid.js');
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.