Perl:将一个文件中的数字附加到第二个文件的字符串
Perl: append numbers from one file to strings of second file
我想将一个文件中附加到 (Unicode) 字符串的数字附加到第二个文件中的匹配字符串。不知何故,我无法全神贯注于如何做到这一点。这是我的两个文件的样子。
文件 1:
दौरा, 2
प्रोत्साहन, 1
प्रगति, 4
文件 2:
दौरा
dorA
प्रोत्साहन
prua2ts3Ahan
prua2ts2Ahan
prua2tsAhan
prua2t2s3Ahan
prua2t2s2Ahan
prua2t2sAhan
prOts3Ahan
prOts2Ahan
prOtsAhan
prOt2s3Ahan
prOt2s2Ahan
prOt2sAhan
प्रगति
praGat2I
praGatI
pragat2I
pragatI
期望的结果如下所示:
输出:
dorA, 2
prua2ts3Ahan, 1
prua2ts2Ahan, 1
prua2tsAhan, 1
prua2t2s3Ahan, 1
prua2t2s2Ahan, 1
prua2t2sAhan, 1
prOts3Ahan, 1
prOts2Ahan, 1
prOtsAhan, 1
prOt2s3Ahan, 1
prOt2s2Ahan, 1
prOt2sAhan, 1
praGat2I, 4
praGatI, 4
pragat2I, 4
pragatI, 4
我有一个从文件 1 创建的散列,它以字符串作为键,以数字作为值。现在需要匹配文件 2 中的这些键,在匹配后收集所有后续行,并将值附加到后续行。有人能指出我正确的方向吗?
您对解决方案的描述是正确的。现在只需将其翻译成代码:
#!/usr/bin/perl
use warnings;
use strict;
my %hash;
open my $F1, '<:encoding(UTF-8)', 'file.1' or die $!;
while (<$F1>) {
chomp;
my ($word, $num) = split /, /;
$hash{$word} = $num;
}
open my $F2, '<:encoding(UTF-8)', 'file.2' or die $!;
my $word;
while (<$F2>) {
chomp;
if (exists $hash{$_}) {
$word = $_;
} elsif ($_) {
print "$_, $hash{$word}\n";
} else {
print "\n";
}
}
我想将一个文件中附加到 (Unicode) 字符串的数字附加到第二个文件中的匹配字符串。不知何故,我无法全神贯注于如何做到这一点。这是我的两个文件的样子。
文件 1:
दौरा, 2
प्रोत्साहन, 1
प्रगति, 4
文件 2:
दौरा
dorA
प्रोत्साहन
prua2ts3Ahan
prua2ts2Ahan
prua2tsAhan
prua2t2s3Ahan
prua2t2s2Ahan
prua2t2sAhan
prOts3Ahan
prOts2Ahan
prOtsAhan
prOt2s3Ahan
prOt2s2Ahan
prOt2sAhan
प्रगति
praGat2I
praGatI
pragat2I
pragatI
期望的结果如下所示:
输出:
dorA, 2
prua2ts3Ahan, 1
prua2ts2Ahan, 1
prua2tsAhan, 1
prua2t2s3Ahan, 1
prua2t2s2Ahan, 1
prua2t2sAhan, 1
prOts3Ahan, 1
prOts2Ahan, 1
prOtsAhan, 1
prOt2s3Ahan, 1
prOt2s2Ahan, 1
prOt2sAhan, 1
praGat2I, 4
praGatI, 4
pragat2I, 4
pragatI, 4
我有一个从文件 1 创建的散列,它以字符串作为键,以数字作为值。现在需要匹配文件 2 中的这些键,在匹配后收集所有后续行,并将值附加到后续行。有人能指出我正确的方向吗?
您对解决方案的描述是正确的。现在只需将其翻译成代码:
#!/usr/bin/perl
use warnings;
use strict;
my %hash;
open my $F1, '<:encoding(UTF-8)', 'file.1' or die $!;
while (<$F1>) {
chomp;
my ($word, $num) = split /, /;
$hash{$word} = $num;
}
open my $F2, '<:encoding(UTF-8)', 'file.2' or die $!;
my $word;
while (<$F2>) {
chomp;
if (exists $hash{$_}) {
$word = $_;
} elsif ($_) {
print "$_, $hash{$word}\n";
} else {
print "\n";
}
}