first.html
我有一个包含以下代码的文件:
<tr>
<td class="headerValue">One</td>
</tr>
<tr>
<td class="headerValue">Two</td>
</tr>
现在我有另一个文件second.txt
,其中包含一些值,例如:
hahaha
hehehe
我想用第二个文件中的值替换每次出现的“headerValue”中的值。
例如。更换后将first.html
变成
<tr>
<td class="headerValue">hahaha</td>
</tr>
<tr>
<td class="headerValue">hehehe</td>
</tr>
文件 secondary.txt 中的数据与文件 first.txt 中的数据无关
答案1
这是一个可能的答案。不过我用的是perl。它不会检查第二个文件中的空行。并且替换是硬编码的。
#!/usr/bin/perl
#
use strict;
# subroutine to load a test file into an array
sub load{
my $file = shift;
open my $in, "<", $file or die "unable to open $file : $!";
my @data = <$in>;
chomp @data;
foreach (@data) { s/\cM//g;}
return @data;
}
my $first = shift || die "usage: $0 [first] [second]\n";
my @first_data = &load($first);
my $second = shift || die "usage: $0 [first] [second]\n";
my @second_data = &load($second);
my $i = 0;
foreach( @first_data )
{
if( s{(<td class="headerValue">)(.*?)(</td>)}{$1$second_data[$i]$3} )
{
$i++;
}
print "$_\n";
}