find -exec sed 再利用可能な文字列で検索/置換

find -exec sed 再利用可能な文字列で検索/置換

基本的な検索/置換を実行する小さなshスクリプトを作成しようとしていますが、1つの小さなバリエーションが含まれていますが、間違った方法で実行しているかどうか疑問に思います。

ここにいる古い文字列

mysql_fetch_array($foo)

これは何ですか?しなければならない

$foo->fetch_array()

今簡単な部分は次のとおりです。

find . -type f -name "*.php" -exec sed -i'' -e 's/mysql_fetch_array(/->fetch_array(/g' {} +

$fooしかし、括弧から取り出して前方にスライドさせる方法がわかりません...sed同じ正規表現でこれを行いますか...変数に保存して再構築しますか?この問題を解決する最も効率的な方法は何ですか?

いろいろ試してみたけど別れないんですよwwwww$精神が完全疲れちゃいましたね!

編集する

私が必要だということに注意してください。マッチ mysql_fetch_array特に - OPに明記していないので申し訳ありません。

ベストアンサー1

find . -type f -name "*.php" -exec sed -i -e 's/^.*mysql_fetch_array(\$\([^)]*\))/$\1->fetch_array()/' {} \;

おすすめ記事