Você precisa usar a opção unzip do -c para descompactar o conteúdo do arquivo .zip para o stdout .... caso contrário, ele descompactará o (s) arquivo (s) no arquivo .zip no disco, e aí não seja nada para canalizar em awk .
Como muitos programas que se originaram do MS-DOS / Windows em vez do Unix, unzip também fala sobre o que está fazendo. Os programas Unix geralmente não fazem isso até que você os informe explicitamente com uma opção -v ou --verbose ou --debug ou similar. É uma diferença cultural significativa entre o dos / windows e o software unix. e programadores.
A partir do ponto de vista de qualquer programa que receba entrada em stdin, isso é quase certamente um lixo que irá confundi-lo (é por isso que os programas unix não são detalhados a menos que você diga que eles são). Portanto, diga unzip para "calar a boca e começar a trabalhar" com a opção -q (silenciosa) ou -qq (extra silenciosa).
por exemplo,
unzip -qq -c log.zip | awk -F'- -' '{print $1, $2}' >newfile
BTW, eu mudei seu script awk ligeiramente. Corrigi o erro de sintaxe pring . Além disso, o separador de campo de saída padrão ( OFS ) em awk é um único espaço ... mesmo se você definir o separador de campo de entrada ( FS ) como algo diferente (por exemplo, com -F'- -' ). Por isso, imprimi apenas $1,$2 - não é necessário usar um caractere de espaço com aspas duplas.