Unix

sed 用包含另一個 unix 路徑的變數替換 unix 路徑

  • September 15, 2015

我需要通過 sed 將 Unix 路徑替換為在 bash 腳本中包含另一個 unix 路徑的變數

例子:

another_unix_path=/another/unix/path
sed -i 's/ \/some\/path\/file.txt/ '$another_unix_path'/g' some_file.txt

您需要轉義特殊字元:

another_unix_path="\/another\/unix\/path"
echo /some/path/file.txt | sed -e 's/\/some\/path\/file.txt/'$another_unix_path'/g'

輸出此結果:

/另一個/unix/路徑

轉義特殊字元/是一種選擇。

您還可以使用以下範例更改預設sed分隔符(即):/``?

another_unix_path="/another/unix/path"
echo /some/path/file.txt | sed -e 's?/some/path/file.txt?'$another_unix_path'?g'

標誌後面使用的字元s定義了將使用哪個分隔符:s?

編輯 :

#!/bin/sh
basepath=/another/unix/path
baseurl=/base/url
sed -i 's?# set $IMAGE_ROOT /var/www/magento2;? set $IMAGE_ROOT '$basepath$baseurl';?g' somefile.txt

引用自:https://serverfault.com/questions/693270