last
não suporta a leitura de um pipe. Você pode usar /dev/stdin
como um nome de arquivo, mas isso é inútil, já que só funciona se você estiver redirecionando de um arquivo em primeiro lugar.
Descompacte o arquivo em um arquivo temporário.
wtmp=$(mktemp)
zcat /var/log/wtmp-20130827.gz >|"$wtmp"
last -f "$wtmp"
rm -f "$wtmp"
Zsh tem uma forma de substituição de processo =(…)
, que coloca a saída de um comando em um arquivo temporário.
last -f =(zcat /var/log/wtmp-20130827.gz)