Vergleichen Sie zwei Dateien mithilfe einer Schleife, um zu sehen, welche Zeichenfolgen nicht in beiden Dateien enthalten sind

Vergleichen Sie zwei Dateien mithilfe einer Schleife, um zu sehen, welche Zeichenfolgen nicht in beiden Dateien enthalten sind
i=$(cat /etc/icinga/devices.d/xlcdw/full)

if IP in grep -q $i /etc/icinga/devices.d/xlcdw/xlcdw-endpoints.cfg;
    echo "Already configured"
  else
    echo $IP
fi

Ich versuche herauszufinden, ob die Hosts, die ich bereits in der .cfg-Datei konfiguriert habe, in der Datei mit dem Namen „full“ vorhanden sind. Natürlich läuft der obige Code nicht einmal. Ich suche nach ihren IP-Adressen.

Antwort1

Ich entnehme eure Angaben den Kommentaren:

Die Datei „full“ enthält eine IP-Adresse pro Zeile. Die .cfg-Datei enthält neben IP-Adressen auch alle möglichen alphabetischen Texte.

Und

Ich muss die gesamte Datei durchlaufen, um zu sehen, ob die darin enthaltenen IPs (eine pro Zeile) auch in der .cfg-Datei enthalten sind.

Sie möchten also iterieren, was Ihr Skript jedoch nicht tut.

Versuchen Sie es mit einer For-Schleife:

for IP in $(cat /etc/icinga/devices.d/xlcdw/full); do
  if [[ `grep -c $IP /etc/icinga/devices.d/xlcdw/xlcdw-endpoints.cfg` > 0 ]]; then
    echo $IP already configured
  else
    echo $IP missing
  fi
done

Passen Sie das an Ihre Bedürfnisse an (was ich nicht ganz verstehe)

verwandte Informationen