linux - 我无法在终端上使用 sed 正确替换字符串

标签 linux bash sed scripting

大家好,我关注了以下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/

相关文章:

进行文件操作时,C++ 程序在 Windows 和 Linux 上运行速度慢得多?

linux - 在 Linux 上关闭已建立的 TCP 连接

linux - 网络服务器无法打开包含 % 的文件

regex - bash:带正则表达式的字符串运算符

linux - 在不同组的行之间添加空行

linux - 是否可以覆盖您正在处理的文件?

windows - 如何为 Windows 配置 OpenGL makefile?(来自 Linux)

bash - 从文件中删除非显示字符

linux - 将文件从服务器A复制到服务器B的shell脚本

linux - sed 在文件中搜索带有特殊字符的字符串