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 要长,但也应该更容易看到您如何针对略有不同的任务更改它。