grep -Efは両方のファイルから一致するIPアドレスをキャプチャし、各反復の結果(xx.xx.xx.xx検索またはxx.xx.xx.xxが見つかりません)を印刷またはエコーします。

grep -Efは両方のファイルから一致するIPアドレスをキャプチャし、各反復の結果(xx.xx.xx.xx検索またはxx.xx.xx.xxが見つかりません)を印刷またはエコーします。

私は何百ものIPアドレスからなる短いリストを持っておりfile1、これらのIPアドレスのうち、デフォルトのリストから欠落しているアドレスがあるかどうかを確認したいと思いますfile2。出力>両方のケースの結果を印刷するファイルにリダイレクトを見つけます。たとえば、次のようになります。

xx.xx.xx.xx missing
xx.xx.xx.xx found

6つの同様の質問を見直して多くのことを学びましたが、既存の質問のどれも私の質問に完全に答えていないので、自分で作成しました。

awk両方を使用していくつかのアプローチを試しましたが、grep -F -f比較結果を調整し、論理的な説明を書くのに問題があります。

6つの既存の回答を検討して多くのことを学びましたが、それらのどれも私が理解する方法で正確に私の目標を解決できませんでした。

ベストアンサー1

whileループを使用してください:

while IFS= read -r i; do
  grep -Fq "$i" file && echo "$i found" || echo "$i missing"
done <ip_addresses

  • whileファイルの各行を繰り返します。ip_addresses
    • grep -Fq-F任意の文字と一致しない一致を含む行を固定文字列()で検索します。この-qフラグはgrep何も印刷しないようにします。
    • && echo "$i found"成功すると、grep住所が見つかりました。
    • || echo "$i missing"そうでなければ欠けています。

おすすめ記事