我有一个文件a.txt,我有文件b.txt.I我正在读取这两个文件。
让我们假设a.txt有:
Apple is a fruit.
I like java.
I am an human being.
I am saying hello world.
让我们说b.txt有
I am the planet earth
现在我正在尝试搜索a.txt中的特定字符串,例如:我是人类。如果我找到这一行。我想将b.txt中的内容追加到a.txt.My输出文件应该看一些像这样的事情
Apple is a fruit.
I like java.
I am the planet earth---->appended
I am an human being.
I am saying hello world.
我正在尝试下面,但它没有帮助
open (FILE1 , "a.txt")
my (@fpointer1) = <FILE>;
close FILE1
open (FILE2 , "b.txt")
my (@fpointer1) = <FILE>;
close FILE2
#Open the a.txt again, but this time in write mode
open (FILE3 , ">a.txt")
my (@fpointer1) = <FILE>;
close FILE3
foreach $line (@fpointer1) {
if (line to be searched is found)
--> Paste(Insert) the contents of file "b.txt" read through fpointer2
}
答案 0 :(得分:1)
这是一个相当快速和肮脏的工作示例:
use warnings;
use 5.010;
open FILE, "a.txt" or die "Couldn't open file: $!";
while (<FILE>){
$string_A .= $_;
}
open FILE, "b.txt" or die "Couldn't open file: $!";
while (<FILE>){
$string_B .= $_;
}
close FILE;
$searchString = "I am an human being.";
$resultPosition = index($string_A, $searchString);
if($resultPosition!= -1){
$endPosition = length($string_A)+length($string_B)-length($searchString);
$temp_String = substr($string_A, 0, $resultPosition).$string_B." ";
$final_String =$temp_String.substr($string_A, $resultPosition, $endPosition) ;
}
else {print "String not found!";}
print $final_String;
可能有更有效的方法。但你可以有个主意。
答案 1 :(得分:0)
这是一个例子
use strict;
open(A, ">>a.txt") or die "a.txt not open";
open(B, "b.txt") or die "b.txt not open";
my @text = <B>;
foreach my $l (@text){
if ($l =~ /I am the planet earth/sg){
print A $&;
}
}
我想,就像这样......