如何在 perl/shell 中将文件的内容插入到另一个文件(如果是正则表达式)中


File1 Contents:
line1-file1      "1" 
line2-file1      "2"
line3-file1      "3" 
line4-file1      "4" 
File2 Contents:
line1-file2     "25"  
line2-file2     "24"  
Pointer-file2   "23"  
line4-file2     "22" 
line5-file2     "21"

在执行 perl/shell 脚本之后,

File 2 content should become
line1-file2     "25"  
line2-file2     "24"  
Pointer-file2   "23" 
line1-file1      "1" 
line2-file1      "2"
line3-file1      "3" 
line4-file1      "4"  
line4-file2     "22" 
line5-file2     "21"

即将文件 1 的内容粘贴到包含行的"指针"之后的文件 2 中。

谢谢

使用 sed 中的 r 命令追加文本文件:

$ sed -i '/Pointer-file2/r file1' file2
$ cat file2
line1-file2     "25"
line2-file2     "24"
Pointer-file2   "23"
line1-file1      "1"
line2-file1      "2"
line3-file1      "3"
line4-file1      "4"
line4-file2     "22"
line5-file2     "21"

使用 ed 中的 r 命令插入文本文件:

$ echo -e '/Pointer/-1r file1n%w' | ed -s file2
$ cat file2
line1-file2     "25"
line2-file2     "24"
line1-file1      "1"
line2-file1      "2"
line3-file1      "3"
line4-file1      "4"
Pointer-file2   "23"
line4-file2     "22"
line5-file2     "21"

我会使用Tie::File。 大约

use Tie::File;
tie my @a, 'Tie::File', 'File2' or die;
tie my @b, 'Tie::File', 'File1' or die;
for (0..$#a) {
  if (/^Pointer-file2/) {
    splice @a, $_, 0, @b;
    last
  }
}

它比使用 sed 要长,但也应该更容易看到您如何针对略有不同的任务更改它。

相关内容

最新更新