[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Größte Schnittmenge von mehreren Date ien



Hi!

Michelle Konzack wrote:
Am 2005-08-04 16:46:50, schrieb Christoph Bersch:
wie kann ich die größte Schnittmenge von mehreren Dateien ermitteln?

Konkret geht es darum in einem Netzwerk zu ermitteln, welche Pakete auf _jedem_ Rechner installiert sind.

Wenn Du eine Dateiliste von jedem Server hast,
kannste folgendes machen:

grep -f server1.list server2.list  >gleiche1.list
grep -f server3.list gleiche1.list >gleiche2.list
grep -f server4.list gleiche2.list >gleiche3.list
grep -f server5.list gleiche3.list >gleiche4.list
grep -f server6.list gleiche4.list >gleiche5.list

Was dann in gleiche5.list übrig bleibt, ist auf
allen Servern vorhanden

Habe es jetzt mit folgendem Skript gemacht:


#!/bin/sh

PACKAGEDIR=pap_packages
TMPFILE=$PACKAGEDIR/pap_packages.tmp
TMPFILE2=$PACKAGEDIR/pap_packages.tmp2
COMMONPACKFILE=$PACKAGEDIR/pap_packages.install

# temporäre Datei löschen
cat /dev/null > $TMPFILE

for file in $PACKAGEDIR/pap*_packages.install
do
#
# Wenn die temporäre Datei noch leer ist, den gesamten
# Inhalt der ersten Datei reinschreiben
if [ ! -s $TMPFILE ]; then
    cat $file > $TMPFILE
#
# Andernfalls Inhalte vergleichen
else
    grep -x -f $TMPFILE $file > $TMPFILE2
    cat $TMPFILE2 > $TMPFILE
fi
done

cat $TMPFILE > $COMMONPACKFILE
rm $TMPFILE $TMPFILE2
#####################################################


Wenn jemand noch Verbesserungsvorschläge für das Skript hat (keine 2 temporäre Dateien, etc) immer her damit!

Danke und Grüße
Christoph



Reply to: