PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Wert in anderer datei suchen, wenn vorhanden löschen



georgf.d
01.07.08, 09:25
Hallo,
ich habe da mal eine Frage,
ich hoffe jemand hat eine antwort parat.
Und zwar folgendes, in einer Datei habe ich eine Paar werte stehen Pro Zeile ein Wert.
Datei1:
Wert1
Wert2
Wert3
Wert4
In Datei 2 Stehen diese Werte unter umständen drin.
Ich möchte nun aus Datei 1 alle zeilen entfernen, von denen der Inhalt in Datei 2 vorkommt also quasi als Abfrage:
if zeile1 von datei 1 in datei2
dann zeile1 datei1 entfernen
nächste zeile.

Wie kann ich das bewerkstelligen??:confused::confused:

Vielen dank im vorraus

3qualizer
01.07.08, 09:49
Also quasi

cat datei1 |
while read line; do
if ! grep "^$line$" datei2 >/dev/null; then
echo "$line";
fi;
done >datei3

mv datei3 datei1
(aus dem Kopf, ungetestet)

georgf.d
01.07.08, 10:03
ja genau, wie kann ich das genau machen???

3qualizer
01.07.08, 10:09
Öhm... indem du diesen Codeschnipsel in eine Datei schreibst, die Dateinamen im Script entsprechend anpasst und das ganze am besten mit Kopien der tatsächlichen Dateien testest.

Painkiller
01.07.08, 10:19
cat datei1 >> datei2
cat datei2 | sort | uniq -d > datei3
cat datei2 | sort | uniq -u >> datei3

Ist um einiges schneller, aber die Ausgabe ist Sortiert.

georgf.d
01.07.08, 13:44
GEILO Klappt

Danke Danke ihr seid perfekt