Você pode usar tail -f para continuar lendo o arquivo à medida que ele cresce. Tenha cuidado com o que você alimenta tail -f em. Você pode canalizar tail -f em um filtro que aguarda até a linha de log desejada e sai. O que não funciona é canalizar tail -f em um filtro que canaliza para outro filtro, porque o filtro intermediário armazenará em buffer sua saída. Isso funciona:
: >file.log # create an empty log file
start-selenium-session --log-file=file.log &
{ tail -n +1 -f file.log & } | sed -n '/Started SocketListener/q'
speak-to-socket
Observe que coloquei tail no plano de fundo. Isso ocorre porque, quando sed encontra a linha desejada, ela sai, mas o pipeline continua em execução, contanto que tail esteja aguardando a próxima linha, o que pode não ocorrer imediatamente se alguma vez¹. tail sairá quando a próxima linha chegar e receber um SIGPIPE . Isso pode deixar um processo de tail perdido se o log for removido sem que nenhuma linha seja gravada nele (obtendo o PID do processo tail para eliminá-lo quando sed sair seria possível, mas complicado).
¹ Graças a Peter.O por apontar o bug em uma versão anterior.