【问题标题】:sed/awk/bash to replace text between two strings with external file contentssed/awk/bash 用外部文件内容替换两个字符串之间的文本
【发布时间】:2012-09-10 04:20:51
【问题描述】:

我正在寻找编写一个脚本/命令,它将采用 inputFile1,在其中查找特定的开始和结束字符串,并替换它们之间的所有文本 包含 inputFile2 的全部内容。

理想情况下,但不是强制性的,这应该可以在不需要转义特殊字符的情况下工作,因此我可以将字符串放入脚本调用的变量中(这样我可以轻松地多次重复使用它)。

例如,我有文件 inputYes.txt 的内容:

DummyOne
Start
That
What
Yes
End
DummyTwo

inputNo.txt 的内容:

This
Why
Not

我希望脚本在 inputYes.txt 中搜索字符串 StartEnd,并将其间的所有文本替换为inputNo.txt 的内容,并写入文件。

所以运行之后,inputYes.txt应该是

DummyOne
Start
This
Why
Not
End
DummyTwo

【问题讨论】:

标签: bash replace sed awk


【解决方案1】:
sed '/end_string/rinputFile2
/start_string/,/end_string/d' inputFile1

【讨论】:

  • 我不能确切地知道这是在做什么,但我可以说它不起作用,它似乎只是在回显 inputFile1 的内容。我需要它来写入文件,而不仅仅是在终端上打印。我会用更多细节更新问题。
  • 匹配start_stringend_string 的行之间的任何文本都应替换为inputFile2 的内容。将输出重定向到文件很简单。
  • 它在我的系统上没有做任何事情。我在运行 OSX,也许 sed 不一样?
  • 根据我的帖子编辑,我正在运行 sed '/End/rinputNo.txt/Start/,/End/d' inputYes.txt,它只是打印 inputYes.txt 的内容。
  • 换行很重要。该命令必须在文件名之后有一个文字换行符。您的命令正在寻找一个名为 inputNo.txt/Start/,/End/d 的文件
猜你喜欢
  • 2021-07-23
  • 1970-01-01
  • 2015-11-10
  • 1970-01-01
  • 2022-06-10
  • 2014-03-19
  • 1970-01-01
  • 2017-03-12
  • 1970-01-01
相关资源
最近更新 更多