【问题标题】:Using sed for substitute text with content different file使用 sed 替换内容不同文件的文本
【发布时间】:2018-10-09 09:51:06
【问题描述】:

我想使用 sed 将文件 1 中的文本 1 替换为文件 2 的内容(单行带数字,例如 100)。我的脚本是:

sed -e "/text1/r file2.txt" file1.txt > new.txt

但是,而不是得到

ZZZZ 100

我得到

ZZZZ text 1

100

请问怎么了?

【问题讨论】:

  • file1.txt 中有什么内容?
  • $ITC $ 28 评论> 注射次数 $NOT $ 25 评论> 温度 $ 200 $ 307 评论> 搅拌器速度 我想用来自不同文件的值替换第 2 行中的 28 和第 4 行中的 25
  • 你的sed --version是什么?
  • GNU sed 3.02 版

标签: sed


【解决方案1】:

http://www.grymoire.com/Unix/Sed.html#uh-37r 将“在包含单词的行之后插入一个文件”

使用 gnu 和 bash,你可以这样

cat file2.txt | xargs -I {} sed 's/text 1/{}/' file1.txt

或者像这样

sed "s/text 1/$(cat file2.txt)/" file1.txt

其他 shell 和版本的 sed 和 xargs 可能能够做类似的事情。

【讨论】:

  • 你用的是什么操作系统?
  • 也许sed 's/text 1/$(cat file2.txt)/' file1.txt 会起作用
  • 你的xargs --version是什么?
  • 它可以工作,但文本 1 被新文件中的 $(cat file2.txt) 取代,而不是文件 2 的内容
  • 可能是双引号而不是单引号?
猜你喜欢
  • 1970-01-01
  • 2022-01-05
  • 2017-12-17
  • 1970-01-01
  • 2011-10-11
  • 2022-10-21
  • 2014-02-09
  • 2020-10-31
  • 1970-01-01
相关资源
最近更新 更多