回到另一個sed/regex問題。Sed /正則表達式動態替換
我已經經歷了很多老的php的東西,將其轉換爲7.0,並且有很多隻需要使用mysql - > mysqli進行的參數交換更改。
我已經使用sed從mysql_query - > mysqli_query進行了批量更改,但我仍然必須將Sql鏈接連接放在所有這些查詢之前。這對於4k +文件來說有點乏味,並且試圖找到一種方法來自動化它。
IE我有很多的:
$query = mysqli_query("SELECT sp FROM sp WHERE sp='$spid'",$sql3);
$queryTwo = mysqli_query("SELECT * FROM sp WHERE sp = 'String'", $sql1);
需要成爲:
$query = mysqli_query($sql3, "SELECT sp FROM sp WHERE sp='$spid'");
$queryTwo = mysqli_query($sql1, "SELECT * FROM sp WHERE sp = 'String'");
我正則表達式來找到 '$ SQLX' 或 '$ SQLX' 在給定的文件這裏。
(\,.\$sql.|\,\$sql.)
我不知道如何去取代大部分的東西像這樣動態的,谷歌並沒有太大的幫助。如果有什麼我應該使用。提前致謝。
編輯:
以下(由123提供)解決方案:
sed 's/\(mysqli_query(\)\([^,]*\),\([^)]*\)/\1\3,\2/'
Works的用例的80%,但我需要能夠迫使最後可能的逗號交換所以像這樣的臺詞:
mysqli_query("UPDATE `services_exchange_publicfolder_addresses` SET `email`='$email', `member`='$member', `accesslevel`='$accesslevel', `accesslevel_new`='$accesslevel_new', `status`='$status', `step`='$step' WHERE `pkey`='$xid' LIMIT 1", $sql1);
不要變成這樣:
mysqli_query(`member`='$member', `accesslevel`='$accesslevel', `accesslevel_new`='$accesslevel_new', `status`='$status', `step`='$step' WHERE `pkey`='$xid' LIMIT 1", $sql1,"UPDATE `services_exchange_publicfolder_addresses` SET `email`='$email');
所以你只是想切換逗號的兩側? – 123