diff options
Diffstat (limited to 'and')
-rwxr-xr-x | and | 50 |
1 files changed, 50 insertions, 0 deletions
@@ -0,0 +1,50 @@ +#!/usr/bin/perl + +=head1 NAME + +and - print lines that are present in one file and another + +=head1 SYNOPSIS + +and file + +and [file|-] [file|-] ... + +=head1 DESCRIPTION + +B<and> reads the specified files and prints out the lines that are common +to all files, in the order they are listed in the last file. Use "-" to +make it read a file from standard input. If only one file is specified, +B<and> first reads standard input, and compares it with the specified file. + +=head1 AUTHOR + +Copyright 2006 by Joey Hess <joey@kitenet.net> + +Licensed under the GNU GPL. + +=cut + +use warnings; +use strict; + +if (@ARGV == 0) { + die "usage: and [file|-] [file|-] ...\n"; +} + +if (@ARGV == 1) { + unshift @ARGV, "-"; +} + +my %seen; +foreach my $fn (@ARGV) { + open (IN, $fn) || die "and: read $fn: $!\n"; + while (<IN>) { + chomp; + $seen{$_}++; + if ($seen{$_} == @ARGV) { + print "$_\n"; + } + } + close IN; +} |