我无法使用sed on terminal正确替换字符串

时间:2014-06-23 14:21:33

标签: linux bash sed scripting

大家好,我跟着以下Find and Replace Inside a Text File from a Bash Command

现在我正在使用sed解决方案,如果我使用两个预定义字符串似乎有效,但我想用文件中的内容替换内容,而不是由我定义。

我的文件中包含"功夫狗"我希望它能取代“#34; dog"用" panda"这个词但那个词在另一个文件中。我试过了:

sed -i 's/dog/$(cat filethatcontainspanda)/g' /home/myhome

但问题是,我没有用熊猫取代“狗”这个词,而是“#34; dog"替换为" $(cat filethatcontainspanda)"所以最终没有"功夫熊猫",我有" kung fu $(cat filethatcontainspanda)"。这有什么解决方法吗?

2 个答案:

答案 0 :(得分:0)

您需要使用双引号"而不是单'awk而不是cat

sed -i "s/dog/$(awk '{print $1}' filethatcontainspanda)/g" /home/myhome

答案 1 :(得分:0)

您必须使用“代替”

sed -i "s/dog/$(cat filethatcontainspanda)/g" /home/myhome