sedで単語を置き換える

sedで単語を置き換える

sed実際、Linux正規表現を使用して助けが必要です。
たとえば、行が次の場合は、角かっこの間に2つのパラメータを変更する必要があります。

 mysqli_select_db($par1, $par2)<br/>

私はそれに変更する必要があります。

 mysqli_select_db($par2, $par1)<br/>

par1一般的なものが必要ですが、必ずしもそうではありませんpar2

ベストアンサー1

より賢明なアプローチsed

sed 's/\(mysqli_select_db(\)\([^,]*\)\(,[[:space:]]*\)\([^)]*\))/\1\4\3\2)/g' file
  • s/変える
  • \(グループ 1 キャプチャ開始
  • mysqli_select_db(リテラル文字列の一致
  • \)キャプチャグループ1の終了
  • \(グループ2キャプチャ開始
  • [^,]*カンマ以外のすべての文字と一致します。
  • \)エンドキャプチャグループ2
  • \(グループ3キャプチャ開始
  • ,[[:space:]]*カンマとオプションの空白文字の一致
  • \)エンドキャプチャグループ3
  • \(グループ 4 キャプチャ開始
  • [^)]*)文字以外の文字と一致
  • \)エンドキャプチャグループ4
  • )閉じる)コマンド
  • /\1\4\3\2)/gキャプチャグループ1、4、3、2と交換して閉じます。)

おすすめ記事