Sedは2つのパターン間のテキストを見つけて置き換えます。

Sedは2つのパターン間のテキストを見つけて置き換えます。

親愛なるStack Exchangeコミュニティの皆さん、

私は別の解決策を見ましたが、正規表現を使用するのが難しいので、これを私の状況に合わせて調整する必要があります。

置き換える必要があるlibオブジェクトのメンバー属性と名前を含むソフトウェア生成ファイルがあります。属性の名前を見つけてデフォルトのファイル名に置き換えるには、sedを使用する必要があります。

以下を含むbobby.jsという名前の.jsファイルで始まります。

// stage content:
(lib.Scenario2IntroFigure0 = function(mode,startPosition,loop) {
    stuff
}

同じbobby.jsファイルで終わりますが、今は次のようになります。

// stage content:
(lib.bobby = function(mode,startPosition,loop) {
    stuff
}

注:シーン2の紹介図0はいその他残念ながら、すべてのファイルについて。

私がしなければならないことを説明する類似コード:

A. 次のパターン間の項目を見つけて、前の名前を区切ります。

// stage content:
(lib.

B. このエンディングパターンは次のとおりです。

= function(mode,startPosition,loop) {

C. 次のコマンドを使用して、ファイルのデフォルト名自体を取得します。

FILENAME=$(basename $1 '.js')

D. 古い名前をファイルのデフォルト名に変更し、次のようにファイルを上書きします。

sed -i "s/Scenario2IntroFigure0/$DA_FILE/g" $1

ただし、「Scenario2IntroFigure0」は、sedがこれら2つのモードの間で見つけたものです。

ベストアンサー1

$file次に置き換えてください$1

file="bobby.js"
filename=$(basename "$file" '.js')
sed -i 's/\((lib\.\).*\( = function(mode,startPosition,loop) {\)/\1'"$filename"'\2/' "$file"

おすすめ記事