簡體   English   中英

sed replace dot dot斜杠,但是es斜杠得到替換

[英]sed replace dot dot slash, but e s slash got replace

操作系統:Debian Jessie 64
sed(GNU sed)4.2.2

我必須替換從../到../../的路徑
測試文件。

$ cat dot.js 
path = '../'

我將反斜杠放在斜杠前面以添加單引號:

sed -i 's/..\//..\/..\//g' dot.js

輸出:

path = '../../'

但是,當我使用實際文件時。

$ cat dotdot.js 
var real_questionHandler = require('../routes/questionHandler_delqid.js');
var questionHandler_delqid = proxyquire('../routes/questionHandler_delqid.js', { 'pg' : pgStub} );

輸出:

var real_questionHandler = require('../../rout../../questionHandler_delqid.js');
var questionHandler_delqid = proxyquire('../../rout../../questionHandler_delqid.js', { 'pg' : pgStub} );

如何保護每條線的第二位置不被更換?

您需要轉義所有點,以使其與文字點字符匹配,否則,未轉義的點將與任何字符匹配。 這樣您的正則表達式匹配../以及es/

sed -i 's/\.\.\//..\/..\//g' dot.js

要么

sed -i 's~\.\./~../../~g' dot.js

例:

$ echo "require('../routes/questionHandler_delqid.js');" | sed 's~\.\./~../../~g'
require('../../routes/questionHandler_delqid.js');

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM