2016-07-18 17 views
0

我在整个目录上使用grep,sed替换字符串。在替换时存在一些冲突,因为有两个非常相似且具有相同模式的字符串。最后的文件扩展名只有很大的不同。sed将具有稍微不同结尾的相同模式替换为字符串

String1中

xargs的sed的-i 的,// website.net/resources/special.js,//newsite.net/location/newspecial.js,g'

String2的

xargs的sed的-i 的,// website.net/resources/file.swf,//newsite.net/location/player.swf,g'

如何指定.js接收正确的替换并且.swf接收到正确的替换?

回答

0

对于第一个,您可以轻松地限制匹配,第二个需要映射以将旧文件名提供给新文件名,否则脚本将如何知道将要替换的“file.swf” “player.swf”。

$ echo '//website.net/resources/special.js' | 
    sed -r 's,(.*/)(.*.js)$,\1new\2,' 

//website.net/resources/newspecial.js 

第一场比赛组将包括每一个字符,直到最后/,第二场比赛的事情.js结束,你可能需要另一个锚,如果有在同一行多个元素。请注意,在一个元素情况下,g是不必要的。

相关问题