例如,鉴于此数据:
ID1 2 3 4
ID1 2 4 5
ID2 2 6 8
ID2 4 6 7
ID3 3 5 6
我想读取一个文件句柄并在第一行循环,直到ID与之前的ID不匹配,然后继续直到文件结尾,所以我的输出文件看起来像:
ID1 2 3 4
ID2 2 6 8
ID3 3 5 6
非常感谢任何帮助。谢谢。
答案 0 :(得分:4)
perl -ane '$s{$F[0]}++ or print' file
答案 1 :(得分:2)
use warnings;
use strict;
use Data::Dumper;
open my $in, '<', 'in.txt';
my %data;
while (<$in>){
chomp;
my @split = split(/\s+/);
next if exists $data{$split[0]};
$data{$split[0]} = [$split[1], $split[2], $split[3] ];
}
print Dumper \%data;
答案 2 :(得分:0)
或者,就像@ mpapec的解决方案一样,但是作为匿名哈希(%_
):
perl -ane '${$F[0]}++ or print' file.txt
那时我真的只是做傻傻的代码高尔夫球......