尋找一個很好的(短&優雅)一個襯下一個Perl腳本:計數和打印重複場 - oneliner
use strict;
use warnings;
my %all;
while(<DATA>) {
chomp;
my ($name, $x, $path) = split /\s+/;
push @{$all{$path}}, $name;
}
foreach my $path (sort keys %all) {
my $cnt = scalar @{$all{$path}};
print "$path $cnt @{$all{$path}}\n" if $cnt > 1;
}
__DATA__
Atxt x a/b/c
Btxt x a/d/x
Ctxt x i/t/a
Dtxt x i/y/a
Etxt x i/t/a
Ftxt x a/d/x
Gtxt x a/d/x
OFC中,oneliner應該從STDIN不讀取數據。
總之,腳本讀取3個字段(name
,x
,path
),並應在一個形式重複路徑輸出摘要:path dup_count name1 ... namex
。每個name
是不同的。
因此,尋找類似:
my_command | perl -F '\s+' -nle 'shorter_variant_of_the_above_script'
投票移動到[codereview.se](http://codereview.stackexchange.com) – daxim
好的,也是投票..;) – jm666