2011-10-31 111 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