別のファイルに表示されるリストをファイルから取得する方法

別のファイルに表示されるリストをファイルから取得する方法

あるファイルから別のファイルのすべての項目のリストを検索して結果ファイルに出力する方法についてのアドバイスを探しています。

検索されるソースファイルは、DNSサーバーの短い名前、FQDNS(Aレコード、およびCNAME)のリストです。入力ファイルは、すべての項目に一致させたい短い名前のリストです。たとえば、検索リストに次のものが含まれているとします。

host123

そのコンテンツを含むすべてのレコードを見つけたいです。たとえば、次のようになります。

host123.example.com
host123-idrac.example.com
host123-backup.example.com
test-cname.example.com > host123.example.com

私はこの種の仕事に少し慣れていないので、おそらくgrepで行うことができますが、他の、おそらくよりエレガントな方法を学びたいと思います。

答え1

私はgrepが正しい選択だと思います。効率のために「grep -f」を使用することができます。これはforループなどを追加するよりも高速です。ただ楽しんでawkを使用するか、2つのネストされたforループを使用できます。

grep -f search_list_file database_file

答え2

ファイル内の1行を占めるパターン(patternsファイル名など)を検索すると、searched_file結果は次の場所にダンプされますresult.out

$ awk 'FNR==NR {a[tolower($0)]=1;next} {for (i in a) if(index(tolower($0),i)) print }' \
  patterns searched_file > result.out

大文字と小文字を区別しない検索が適用されます回答投稿者:stackoverflow.comのJamesBrown。これはでテストされましたbash

関連情報