我想按照特定顺序对文件内容进行排序,然后在另一个文件中进行排序。例如,
输入文件1:
dff_0_1:G11
dff_0_5:N_25
dff_0:G10
dff_0_3:G13
dff_0_2:G12
输入文件2:
G13
G11
G12
G10
N_25
输出File1:
dff_0_3:G13
dff_0_1:G11
dff_0_2:G12
dff_0:G10
dff_0_5:N_25
这是我写的perl代码,但它没有按照我的意愿工作。
my @input_file2 = <IN2>;
chomp @input_File2;
while (<input_file1>) {
foreach my $i (0..$#input_File2){
print OUT43 if /(.+)\:\Q$input_File1[$i]\E/;
}
}
close (IN33);
close (IN43);
close (OUT43);
答案 0 :(得分:0)
您的代码中有很多错误。
while (<input_file1>) {
&#39;&#34; input_file1&#34;文件句柄?我编辑了一些代码:
#!/usr/bin/perl
open (IN33, "<1.txt") or die "can't open file 1.txt";
open (IN43, "<2.txt") or die "can't open file 2.txt";
open (OUT43, ">out.txt") or die "can't open file out.txt";
my @input_file2 = <IN43>;
my @input_file1 = <IN33>;
chomp @input_file2;
foreach my $i (@input_file2){
foreach (@input_file1) {
print OUT43 if /(.+)\:\Q$i\E/;
}
}
close (IN33);
close (IN43);
close (OUT43);
答案 1 :(得分:0)
使用grep
来执行此操作。 grep
从数组中返回匹配的元素,然后构造用于存储grep输出的列表。使用select
将print语句的内容写入新文件。
使用词法文件处理程序时,无需关闭文件
open my $fh1, "<", "one.txt";
open my $fh2 , "<","two.txt";
open my $wh, ">","output.txt";
my @data1 = <$fh1>;
select ($wh);
while (my $line = <$fh2>)
{
chomp $line;
my ($sort_data) = grep{/$line$/} @data1;
print "$sort_data";
}