我在整个目录上使用grep并使用sed来替换字符串。替换中存在一些冲突,因为有两个非常相似且具有相同模式的字符串。最大的区别是文件扩展名。
字符串1
xargs sed -i ' S,// website.net/resources/special.js,// newsite.net/location/newspecial.js,g'
String2的
xargs sed -i ' S,// website.net/resources/file.swf,// newsite.net/location/player.swf,g'
如何指定.js收到正确的替换,并且.swf收到正确的替换?
答案 0 :(得分:0)
对于第一个,您可以轻松地限制匹配,对于第二个,您需要映射以将旧文件名提供给新文件名,否则脚本将如何知道" file.swf"将被替换为" player.swf"。
$ echo '//website.net/resources/special.js' |
sed -r 's,(.*/)(.*.js)$,\1new\2,'
//website.net/resources/newspecial.js
第一个匹配组将包括每个字符,直到最后/
。,第二个匹配以.js
结尾的内容,如果同一行上有多个元素,则可能需要另一个锚点。请注意,在一个元素中,g
是不必要的。