Suponha que o arquivo l1 seja a lista com os endereços IP desconhecidos e o arquivo l2 seja a lista principal.
Os itens a seguir listarão todos os endereços IP que estão apenas em l1 e não em l2 :
egrep -v "'cat l2|xargs -I {} echo -n '|{}'|sed -e 's/^|//''" l1
Se você remover a opção -v , ela listará todos os endereços IP que ocorrem em l1 e l2 :
egrep "'cat l2|xargs -I {} echo -n '|{}'|sed -e 's/^|//''" l1
Ambos os arquivos l1 e l2 devem estar no mesmo formato.
O seguinte comando:
cat l2|xargs -I {} echo -n '|{}'|sed -e 's/^|//'
cria uma lista de endereços IP, separados por | , do conteúdo do arquivo l2 . O | é o caractere or para o regex passado para egrep .
Testado com arquivos:
$ cat l1
192.168.0.10
192.168.2.14
192.168.0.11
192.168.0.9
$ cat l2
10.64.10.200
192.168.4.0
192.168.2.3
192.168.0.10
192.168.0.11
192.168.1.0
192.168.2.0
Encontrar endereços IP ausentes:
$ egrep -v "'cat l2|xargs -I {} echo -n '|{}'|sed -e 's/^|//''" l1
192.168.2.14
192.168.0.9
Encontre endereços IP duplicados:
$ egrep "'cat l2|xargs -I {} echo -n '|{}'|sed -e 's/^|//''" l1
192.168.0.10
192.168.0.11
Espero apenas que seus arquivos não sejam muito longos para transbordar o comprimento máximo da linha de comando: - (