从另一个文件中查找一个文件中的值

从另一个文件中查找一个文件中的值

我有 2 个文件,其中一个文件中有一些值,我需要在另一个文件中找到它们。我将使用第一个文件在第二个文件中进行查找,而不是对每个单个值进行 grep

IE

文件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

如果需要更详细地控制输出,可以使用 shell 循环:

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

第二种方法允许您为找到的每个模式打印单独的消息,但在较大的文件上会慢得多。

相关内容