Ang*_*elo 2 python bash shell perl
我有4个文件,并且想知道与其他文件中的元素相比不重叠的元素(每个文件).
档案A.
Vincy
ruby
rome
Run Code Online (Sandbox Code Playgroud)
档案B.
Vincy
rome
Peter
Run Code Online (Sandbox Code Playgroud)
文件C.
Vincy
Paul
alex
Run Code Online (Sandbox Code Playgroud)
档案D.
Vincy
rocky
Willy
Run Code Online (Sandbox Code Playgroud)
任何关于perl,python,shell,bash中的一个衬垫的建议.预期的产出是:
文件:ruby,文件B: Peter,文件C: Paul,Alex文件d: ,.rockyWilly
ber*_*rdt 10
澄清问题后编辑:所有文件中的唯一元素及其出现的文件:
cat File_A File_B File_C File_D |sort | uniq -u | while read line ; do file=`grep -l $line File*` ; echo "$file $line" ; done
Run Code Online (Sandbox Code Playgroud)
编辑:
如果文件很大,那么这样做的方式会更快:
#!/usr/bin/perl
use strict;
use autodie;
my $wordHash ;
foreach my $arg(@ARGV){
open(my $fh, "<", $arg);
while(<$fh>){
chomp;
$wordHash->{$_}->[0] ++;
push(@{$wordHash->{$_}->[1]}, $arg);
}
}
for my $word ( keys %$wordHash ){
if($wordHash->{$word}->[0] eq 1){
print $wordHash->{$_}->[1]->[0] . ": $word\n"
}
}
Run Code Online (Sandbox Code Playgroud)
执行as:myscript.pl filea fileb filec ... filezz
澄清之前的东西: 使用shell命令很容易.所有文件中的非重复元素
cat File_A File_B File_C File_D |sort | uniq -u
Run Code Online (Sandbox Code Playgroud)
所有文件中的唯一元素
cat File_A File_B File_C File_D |sort | uniq
Run Code Online (Sandbox Code Playgroud)
每个文件的独特元素(感谢@Dennis Williamson编辑)
for line in File* ; do echo "working on $line" ; sort $line | uniq ; done
Run Code Online (Sandbox Code Playgroud)