【发布时间】:2015-08-16 11:51:06
【问题描述】:
我想匹配并打印两个文件(File1.txt 和 File2.txt)中的数据。目前,我正在尝试将 File1 中第二列的第一个字母与 File2.txt 中第三列的第一个字母匹配。
File1.txt
1 H 35
1 C 22
1 H 20
File2.txt
A 1 HB2 MET 1
A 2 CA MET 1
A 3 HA MET 1
OUTPUT
1 MET HB2 35
1 MET CA 22
1 MET HA 20
这是我的脚本,我已尝试按照此提交:In Perl, mapping between a reference file and a series of files
#!/usr/bin/perl
use strict;
use warnings;
my %data;
open (SHIFTS,"file1.txt") or die;
open (PDB, "file2.txt") or die;
while (my $line = <PDB>) {
chomp $line;
my @fields = split(/\t/,$line);
$data{$fields[4]} = $fields[2];
}
close PDB;
while (my $line = <SHIFTS>) {
chomp($line);
my @columns = split(/\t/,$line);
my $value = ($columns[1] =~ m/^.*?([A-Za-z])/ );
}
print "$columns[0]\t$fields[3]\t$value\t$data{$value}\n";
close SHIFTS;
exit;
【问题讨论】:
-
有什么问题?
-
是的,您真正想问什么?请说明您面临的问题(至少)以及您尝试过的方法。
-
另外,您没有在任何地方匹配两个文件之间的列。你也应该调查一下。
-
@choroba,感谢您的 cmets,我已尝试上述脚本并收到错误“在连接或字符串中使用未初始化的值”,我认为这是因为我没有匹配适当的值.我想知道是否有人可以为我指明正确的方向,以及如何实现这一目标。