Encontre valores em um arquivo de outro arquivo

1

Eu sei, o título não está claro. Eu tenho 2 arquivos, em um desses eu tenho alguns valores e preciso encontrá-los em outro arquivo. Em vez de grep para cada valor único, eu usaria o primeiro arquivo para fazer pesquisa no segundo arquivo

ou seja,

Arquivo 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

Arquivo 2

alweya.com

Outout - o arquivo 1 contém www.alweya.com

    
por Federi 16.11.2015 / 21:22

2 respostas

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

Arquivo 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

Arquivo 2

alweya.com
    
por 16.11.2015 / 22:20
1

Depende do que exatamente você quer fazer. A abordagem mais simples é usar grep , passando um arquivo de padrões com -f :

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

Se você precisar controlar a saída com mais detalhes, você pode usar um loop de shell:

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

A segunda abordagem permite que você imprima mensagens individuais para cada padrão encontrado, mas será muito, muito mais lento em arquivos maiores.

    
por 17.11.2015 / 00:10

Tags