如何用另一个文档中的行替换文档中的通配符?

时间:2014-04-17 22:48:45

标签: regex perl replace

如何更改外卡,让我们说一个<x>并将其更改为另一个文档中的第一行?

文件A:包含外卡将是这样的:

<x> text text text
text text text <x>
tex text <x> text 

文件B:包含要替换的单词列表。

num-1
num-2
num-3
num-4

所以期望的输出是:

num-1 text text text
text text text num-2
tex text num-3 text 

我真的没有尝试任何事情,因为我不知道如何开始。 但我猜,有必要从一个文件中读取,然后另一个文件,这很困难。

更新

米勒看看这个结果:输入与上面提供的相同。

 text text text
text text text num-2
 text xt num-3

1 个答案:

答案 0 :(得分:2)

读入第二个文件以构建单词列表。然后迭代第一个文件,一次替换一个“外卡”。

use strict;
use warnings;
use autodie;

my $file1 = 'foo.txt';
my $file2 = 'bar.txt';

open my $fh, '<', $file2;
chomp(my @words = <$fh>);
close $fh;

open $fh, '<', $file1;
while (<$fh>) {
    s/<x>/shift @words/eg;
    print;
}