【问题标题】:Execute a cat command within a sed command in Linux在 Linux 的 sed 命令中执行 cat 命令
【发布时间】:2013-06-05 17:14:45
【问题描述】:

我有一个file.txt,其中包含一些内容。我想在file1.txt 中搜索一个字符串,如果该字符串匹配,我想将该字符串替换为file.txt 的内容。我怎样才能做到这一点?

我尝试过使用sed:

sed -e 's/%d/cat file.txt/g' file1.txt

这是在file1.txt 中搜索匹配的字符串并将其替换为字符串cat file.txt,但我想要file.txt 的内容。

【问题讨论】:

  • 到底是什么问题?
  • @amar ,您能否在您的问题中指定或举例,以便读者更好地理解它
  • file.txt 包含一行还是多行?应该保留文件中的换行符,还是可以将其视为单行,换行符替换为空格?

标签: linux sed cat


【解决方案1】:

在将文件内容插入 sed 字符串之前,如何将文件内容保存在变量中?

$content=`cat file.txt`; sed "s/%d/${content}/g file1.txt"

【讨论】:

  • 你也可以这样做:sed "s/%d/$(cat file.txt)/g" file1.txt。
  • @uzsolt 是的,但我更喜欢变量,因为它们更具可读性。
  • @amar 如果您找到了其他解决方案,请添加答案,以便其他人可以看到此问题已得到解答,如果他们想回答或查看,请不要浪费时间如果他们有同样的问题。
  • 你需要content=$(cat file.txt); sed ...,如果文件中碰巧有/&,或者可能还有其他几个序列,这将不起作用。
  • sed -e 's/%d/'$a'/g' amar.htm 这解决了我的问题 amar.htm 具有确实要搜索的字符串“%d”和“a " 有要替换的字符串。
【解决方案2】:

给定original.txt 的内容:

this is some text that needs replacement

replacement.txt 的内容:

no changes

我不确定您的替换标准是什么,但假设我想替换 original 文件中所有出现的单词 replacement,您可以替换原始文本的内容使用其他文件的内容:

> sed -e 's/replacement/'"`cat replacement.txt`"'/g' original.txt
this is some text that needs no changes

【讨论】:

    【解决方案3】:

    您可以使用r 命令读取带有sed 的文件。但是,这是基于行的操作,可能不是您想要的。

    sed '/%d/r file1.txt'
    

    读取发生在“每行”循环结束时。

    【讨论】:

      猜你喜欢
      • 2023-03-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-19
      • 1970-01-01
      • 2021-07-25
      • 1970-01-01
      相关资源
      最近更新 更多