2011-10-31 46 views
1

我已經對此進行了幾次搜索,雖然解決方案看起來很明顯,但對於我的特殊情況我似乎無法得到確切的結果。我有一個包含字符串「$ {string}」的文件,我想用恰好是文件路徑「/ tmp/myfilepath」的另一個字符串替換它。在Redhat Linux上使用「sed」查找和替換

「sed」顯然似乎是在linux中這樣做的最流行的選擇。我使用下面的命令:

sed -i 's/"${string}"/"/tmp/myfilepath"/g' myFile.txt 

我得到錯誤信息......

sed: -e expression #1, char 5: unknown option to `s' 

我使用的是雙引號,因爲它在它的附加斜線。我曾嘗試混合匹配單引號和雙引號,但似乎沒有任何工作。任何想法或解決方案?提前致謝。

+0

可能重複[轉義sed搜索模式的字符串](http://stackoverflow.com/questions/407523/escape-a-string-for-sed-search-pattern) –

回答

1

使用不同的分隔符:

sed -i "s|${string}|/tmp/myfilepath|g" myFile.txt 

如果字符串中可以包含特殊字符,則爲fix it fi RST。

4

你應該逃脫反斜線在替換字符串:

sed -i 's/"${string}"/"\/tmp\/myfilepath"/g' myFile.txt 

或使用不同的分隔符用替換命令,如冒號:

sed -i 's:"${string}":"/tmp/myfilepath":g' myFile.txt