2つのファイルがあります.1つはコードのリストを持ち、もう1つは名前の付いたコードのリストを持ち、パイプで区切られています。最初のファイルのリストで2つのtxtファイルをマージし、同じリストを出力に残す
例:)1ファイル:
00001
00002
00001
00003
00002
00004
ファイル2:*いくつかの名前を注意など名1 1可能性が新例えば以下を参照:
00001 | name1 1 1
00002 | name2 2
00003 | name3 3 3 3
00004 | name4 4 4 4 4
私は出力を維持する必要がありますファイル1で同じ構造を持つが、このようなファイル2から名前を取得:
出力ファイル:
を00001 | name1 1 1
00002 | name2 2
00001 | name1 1 1
00003 | name3 3 3 3
00002 | name2 2
00004 | name4 4 4 4 4
など。私はまた、WindowsのCMDにFINDSTR機能を使用している
#!/usr/bin/perl -w
use strict;
#FindTextInFile.pl
my ($names, $data) = ("codesonly.txt", "codeandtext.txt");
open (FILE1, $names) || die;
open (FILE2, $data) || die;
undef $/; #Enter "file-slurp mode" by emptying variable indicating end-of-record
my $string = <FILE2>; #Read entire file to be searched into a string variable
$/ = "\n"; #Restore default value to end-of-record variable
while (<FILE1>) {
chomp; #remove new-line character from end of $_
#Use quotemeta() to fix characters that could spoil syntax in search pattern
my $qmname = quotemeta($_);
if ($string =~m/$qmname/i) {
print " $_ \n";
}
else {
}
}
コマンドが、それは、出力ラインしません:私は、私が発見し、最初のファイルからの行によって、ファイル内の一致を検索するように変更Perlスクリプトを使用しています私のためにラインで。私はPERLにはとても慣れていないので、どんな助けも偉大であるか、これを行う簡単な方法があれば非常に役に立ちます。私が使用するファイルは〜1M行なので、速くなるものが必要です。
おかげ
実際に自分で作成していない限り、[参加](http://www.manpagez.com/man/1/join/)を試してください。 –