Я вижу в комментарии ОП, что, возможно, вопрос больше не является вопросом. Однако следующая небольшая модификация будет обрабатывать ситуацию с пустой строкой. Просто добавьте проверку, чтобы убедиться, что в строке есть хотя бы одно поле:
grep "$(awk '{if (NF > 0) print $1}' file1)" file2
И если файл с шаблонами представляет собой просто набор шаблонов на строку, то его намного более простой вариант:
grep -f file1 file2
Это заставляет grep использовать строки в файле1 в качестве шаблонов.