2015-08-17 39 views
0

我想用sed和2個變量替換文件中的一行。我嘗試這樣做:Bash用sed和2個變量替換行

varFind=$(echo "cfg_dir=/usr/local/.file1.cfg") 
    varReplace=$(echo "cfg_dir=/usr/dir1/file2.cfg") 

    sed -i "s/${varFind}/${varReplace}/" /usr/local/file.txt 

但它不斷拋出這樣的:

[email protected]:~# ./script.sh sed: -e expression #1, char 17: unknown option to `s' 

我在做什麼錯?我看過,看起來對我來說是正確的。

+0

添加真正的string1和string2到你的問題。 – Cyrus

+0

你是什麼意思? – csimp

+3

您按預期工作的示例@Cyrus假定'varReplace'的'varFind'中有一個奇怪的字符,例如'/'。 – Victory

回答

2

解決問題的最簡單方法是更改​​s命令的分隔符。更改sed命令是:

sed -i "s%${varFind}%${varReplace}%" /usr/local/file.txt 

這個工作,只要你的變量不包含%

+0

謝謝,我對bash還是一個新鮮事物,它讓我有一點點了解它。 – csimp