Linux
SED 查找和替換 w 正則表達式
好吧,所以我很困惑,沒有想法。
我正在嘗試用新 IP 地址替換所有舊 IP 地址。
find -type f | grep \.php$ | xargs sed -r -i "s/(\'|\")(localhost|127.0.0.1|10.0.32.4|10.0.32.5)(\'|\")/\"10.0.32.165\"/g"
我正在嘗試查找所有 PHP 文件,並將以下任何內容(localhost、127.0.0.1、10.0.32.4、10.0.32.5)替換為 10.0.32.165。
find * | grep \.php$ | xargs egrep "(\'|\")(localhost|127.0.0.1|10.0.32.4|10.0.32.5)(\'|\")"
執行第一個命令後,我想確保沒有留下舊值的痕跡,所以我執行了上面的命令,但不幸的是它返回了
siteeval/application/libraries/fetcher.url.class.php: $this->host = "10.0.32.4";
有人看到我做錯了嗎?或者也許可以讓我找到更好的方法?
嘗試這個:
sed -e 's/\(127\.0\.0\.1\|10\.0\.32\.4\|localhost\|10\.0\.32\.5\)/10.0.32.165/g'
您需要轉義括號和管道。如果您想確保它們始終在引號之間,請嘗試:
sed -e 's/\"\(127\.0\.0\.1\|10\.0\.32\.4\|localhost\|10\.0\.32\.5\)\"/10.0.32.165/g'
稍微測試一下:
$ echo '"10.0.32.4"' | sed -e 's/\"\(127\.0\.0\.1\|10\.0\.32\.4\|localhost\|10\.0\.32\.5\)\"/10.0.32.165/g' 10.0.32.165 $ echo '"localhost"' | sed -e 's/\"\(127\.0\.0\.1\|10\.0\.32\.4\|localhost\|10\.0\.32\.5\)\"/10.0.32.165/g' 10.0.32.165
對未來的建議。總是先嘗試小樣本(使用像這樣的迴聲),然後再轉向複雜的情況。
*編輯:也逃脫了點。