大家好,我关注了以下Find and Replace Inside a Text File from a Bash Command 。
现在我正在使用 sed
解决方案,如果我使用两个预定义字符串,该解决方案似乎可以工作,但我想用文件中的内容替换内容,而不是由我定义。
我有一个带有“功夫狗”字样的文件,我希望它用“ Pandas ”字样替换“狗”字样,但该字样在另一个文件中。我尝试这样做:
sed -i 's/dog/$(cat filethatcontainspanda)/g' /home/myhome
但问题是,我没有将“dog”一词替换为“panda”,而是将“dog”一词替换为“$(cat filethatcontainspanda)”,所以最后我没有使用“kung fu panda”,而是使用了“kung fu $(cat filethatcontainspanda)”。有什么解决方法吗?
最佳答案
您需要使用双引号"
代替单引号'
,使用awk
代替cat
:
sed -i "s/dog/$(awk '{print $1}' filethatcontainspanda)/g" /home/myhome
关于linux - 我无法在终端上使用 sed 正确替换字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24368369/