快速获取两组数据的交集,并集,补集

本文介绍了一个Perl脚本,用于高效地处理两组数据,包括计算交集、并集及各自独有的元素,并将结果输出到不同的文件中。此脚本适用于需要频繁对比和分析数据集的工作场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

笔者常用这个脚本快速查看两组数据的交并补集。(注意:请保持每组数据是非冗余的)。


#!/usr/bin/perl -w
use strict;
use File::Basename;
die "#usage:perl $0 <a.txt><b.txt>\n" if @ARGV!=2;
my ($p,$q)=@ARGV;
open IN1,$p||die;
open IN2,$q||die;
chomp(my @p=<IN1>);
chomp(my @q=<IN2>);
close IN1;
close IN2;
my %p = map{$_,1} @p;
my %q = map{$_,1} @q;
my @inter = grep{$p{$_}} @q;
my %merge = map {$_,1} @p,@q;
my @merge = keys %merge;
my @q_u = grep {!$p{$_}} @merge;
my @p_u = grep {!$q{$_}} @merge;
my $p_name=basename$p;
my $q_name=basename$q;
open OUT1,">",$p_name.".uniq.txt";
print OUT1 "$_\n" foreach sort{$a cmp $b}@p_u;
close OUT1;
open OUT2,">",$q_name.".uniq.txt";
print OUT2 "$_\n" foreach sort{$a cmp $b}@q_u;
close OUT2;
open OUT3,">","${p_name}_$q_name.inter.txt";
print OUT3 "$_\n" foreach sort{$a cmp $b}@inter;
close OUT3;
open OUT4,">","${p_name}_$q_name.merge.txt";
print OUT4 "$_\n" foreach sort{$a cmp $b}@merge;
close OUT4;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值