这是我的输入文件:
SC0001 : SC0001 SC0002 SC0001
SC0004 : SC0004 SC0008 SC0001 SC0001 SC0004 SC0009 SC0000 SC0003 SC0002
SC0006 : SC0001 SC0006 SC0004 SC0005 SC0006
SC0003 : SC0001 SC0003
SC0008 : SC0008
SC0009 : SC0001 SC0009 SC0001 SC0001
输出应如下所示:
SC0001 : SC0002
SC0004 : SC0008 SC0001 SC0009 SC0000 SC0003 SC0002
SC0006 : SC0001 SC0004 SC0005
SC0003 : SC0001
SC0008 :
SC0009 : SC0001 SC0001 SC0001
答案 0 :(得分:3)
perl -pe '%s=(); s/(\S+)/ $s{$1}++ ? "" : $1 /ge; s/ \K +//g' file
答案 1 :(得分:0)
这是快速而肮脏的解决方案:
#!/usr/bin/perl
use strict;
use warnings;
open(my $fh, "<", "test1.txt")
or die "cannot open < file name: $!";
while (my $line = <$fh>) {
my @elements = split(/ : /, $line);
if ($#elements > -1) {
$elements[1] =~ s/ ?$elements[0]//g;
$line = join(" : ", @elements);
$line =~ s/ {2,}/ /;
}
print $line;
}
close($fh);
SC0001 : SC0001 SC0002 SC0001
SC0004 : SC0004 SC0008 SC0001 SC0001 SC0004 SC0009 SC0000 SC0003 SC0002
SC0006 : SC0001 SC0006 SC0004 SC0005 SC0006
SC0003 : SC0001 SC0003
SC0008 : SC0008
SC0009 : SC0001 SC0009 SC0001 SC0001
SC0001 : SC0002
SC0004 : SC0008 SC0001 SC0001 SC0009 SC0000 SC0003 SC0002
SC0006 : SC0001 SC0004 SC0005
SC0003 : SC0001
SC0008 :
SC0009 : SC0001 SC0001 SC0001