2016-07-18 18 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是不必要的。

相關問題