#!/usr/bin/env perl -w use v5.014; my %seen; my $count; my @recs; while () { chomp; my @F = split '&'; $count //= @F; die "NF mismatch" if @F != $count; $seen{$_}++ for @F; push @recs, \@F; } for my $rec (@recs) { say join "\t", grep $seen{$_} != @recs, # Doesn't show up in every record @$rec ; } __DATA__ a=1&b=1&c=1&d=2&e=&f=3 a=1&b=2&c=3&d=2&e=&f=4 a=1&b=2&c=5&d=1&e=&f=5