Usando o GNU grep:
grep -w -f file2.txt file1.txt
Isto diz ao grep
para combinar apenas com "palavras" inteiras, e para obter a lista de padrões para procurar no arquivo2.txt
Se houver alguma chance de que o conteúdo do arquivo2.txt possa aparecer no restante das linhas do arquivo1.txt, você poderá usar a substituição de processo do sed e do bash da seguinte forma:
grep -f <(sed -e 's/^/^/ ; s/$/\b/' file2.txt) file1.txt
Isso usa sed para transformar cada linha idN
em ^idN\b
antes de usá-la em grep -f
.