2016-07-18 6 views
0

私はディレクトリ全体に対してgrepを使い、文字列を置き換えるためにsedを使います。非常に似ていて同じパターンを持つ2つの文字列があるため、置き換えにはいくつかの競合があります。最後にファイルの拡張子が大きく異なるだけです。文字列の終わりがわずかに異なる同じパターンを置き換えるためにsed

文字列1

xargsのは、-i sedの年代を、// website.net/resources/special.js,//newsite.net/location/newspecial.js,g「

文字列2

xargsの-i sedの年代を、// website.net/resources/file.swf,//newsite.net/location/player.swf,g「

.jsが正しい置換を受け取り、.swfが正しい置換を受け取るように指定する方法を教えてください。

答えて

0

最初は、一致を簡単に制限することができます.2番目の場合は、新しいファイル名に古いファイル名を提供するマッピングが必要です。そうでない場合、スクリプトは "file.swf" "player.swf"

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

//website.net/resources/newspecial.js 

最初のマッチグループは、最後の/まで、すべての文字が含まれます。同じ行に複数の要素が存在する場合、.jsで終わる第二試合の事は、あなたが別のアンカーが必要な場合があります。 1つの要素の場合、gは不要です。

関連する問題