将一个文件中的字符串替换为另一个文件的内容

Ale*_*lls 1 bash

我正在寻找一个BASH程序,我可以运行以使用file1中的所有内容替换file2中的匹配字符串.

所以file2看起来像这样:

define([
 'require'
  ****
 ],
 function(require){
 });
Run Code Online (Sandbox Code Playgroud)

file1看起来像:

, 'app/js/controllers/x'
, 'app/js/controllers/y'
, 'app/js/controllers/z'
Run Code Online (Sandbox Code Playgroud)

有一个简单的BASH脚本,我可以用来从file1复制3行,并用****file1内容替换字符串,然后将结果写入file3.js?

Joh*_*024 5

使用sed

$ sed $'/[*][*][*][*]/{r file1\nd}' file2
define([
 'require'
, 'app/js/controllers/x'
, 'app/js/controllers/y'
, 'app/js/controllers/z'
 ],
 function(require){
 });
Run Code Online (Sandbox Code Playgroud)

这将查找包含的行****.找到后,它会读取file然后删除包含的行****.

使用awk:

$ awk 'FNR==NR{s=s"\n"$0;next;} /[*][*][*][*]/{$0=substr(s,2);} 1' file1 file2
define([
 'require'
, 'app/js/controllers/x'
, 'app/js/controllers/y'
, 'app/js/controllers/z'
 ],
 function(require){
 });
Run Code Online (Sandbox Code Playgroud)

第一个文件被读入变量s.当我们****在第二个文件中看到时,我们将其替换s为第一个文件.