Удалось запустить скрипт правильно, используя статус выхода netcat nc, при запуске без опции -v. В любом случае, кажется, что вывод netcat netcat не попадает в grep. Я полагаю, что это может быть вызвано каким-то разветвлением.
UPDATE:
Как упоминал Тердон в комментарии к его ответу, часть выхода из nc / netcat напечатан на stderr, часть до толстого. Таким образом, объединение этих двух файлов перед конвейером в grep делает трюк:
netcat -zvw1 1.2.3.4 55 2>&1 | grep "open"