Listen negieren

Es kann vorkommen das wir 2 Listen gegeneinander vergleichen müssen, meistens dann wenn's eilt.

Hierfür habe ich ein Script geschrieben, dass diese beiden vergleicht und in eine dritte schreibt,

 

#!/bin/bash

# script soll 2 dateien vergleichen/abgleichen und in eine dritte schreiebn

# 11.04.2013 - jast - first-draft
# 03.07.2013 - jast - sed-pattern verbessert damit nur das gestrichen wird, was auch gestrichen werden soll

 

# Variablen
A="$1"
B="$2"
C="$3"
TMPFILE1="/tmp/listen-negieren-tmp1"
TMPFILE2="/tmp/listen-negieren-tmp2"
TMPFILE3="/tmp/listen-negieren-tmp3"

#functions
usage(){
        echo "Usage `basename $0` <erste_liste> <zu_subtrahiernde_liste> <output_liste>" && exit 1
}

# verifikation
if [ -z ${A} ] || [ -z ${B} ] || [ -z ${C} ]; then
usage
fi

# save some stuff
cat ${B} >> ${TMPFILE2}
cat ${A} >> ${TMPFILE1}

for subtrsrv in `cat ${B}` ; do
cat ${TMPFILE1} | sed "/^${subtrsrv}$/d" > ${TMPFILE3}
cp ${TMPFILE3} ${TMPFILE1}
done

cp ${TMPFILE1} ${C}

rm ${TMPFILE1} ${TMPFILE2} ${TMPFILE3}
exit 0