あるファイルから別のファイルの値を見つける

あるファイルから別のファイルの値を見つける

2つのファイルがあり、そのうちの1つに値があり、別のファイルでその値を見つける必要があります。すべての単一値をgrepingする代わりに、最初のファイルを使用して2番目のファイルで検索します。

つまり

ファイル1

ns1.cloudns.net. -17554 IN A 85.159.233.17
ns1.cloudns.net. -17554 IN AAAA 2a00:1768:1001:9::1
www.alweya.com. -335336 IN A 192.69.217.246

ファイル2

alweya.com

出力 - ファイル1に次のものが含まれていますwww.alweya.com

答え1

while read line
do
msg="File 1 contains "
msg2="$msg$(grep "$line" file1.txt | cut -d ' ' -f 1)"
if [ ${#msg2} -ne ${#msg} ]; then
  echo $msg2
fi
done < file2.txt

ファイル1

ns1.cloudns.net. -17554 IN A 85.159.233.17
ns1.cloudns.net. -17554 IN AAAA 2a00:1768:1001:9::1
www.alweya.com. -335336 IN A 192.69.217.246

ファイル2

alweya.com

答え2

正確に何をしたいかによって異なります。最も簡単な方法はを使用してgrepスキーマファイルを渡すことです-f

$ grep -f file2 file1 
www.alweya.com. -335336 IN A 192.69.217.246

出力をさらに制御する必要がある場合は、シェルループを使用できます。

$ while read pat; do 
    grep -q "$pat" file1 && echo "file1 contains $pat"; 
done < file2
file1 contains alweya.com

2番目の方法を使用すると、見つかったパターンごとに別々のメッセージを印刷できますが、大きなファイルでは速度がはるかに遅くなります。

関連情報