A saída de zcat
do piping para head -n 1
descompactará uma pequena quantidade de dados, garantindo que seja suficiente para mostrar a primeira linha, mas normalmente não mais do que alguns buffer-fulls (96 KiB em meus experimentos):
zcat logfile.gz | head -n 1
Uma vez que head
tenha terminado de ler uma linha, fecha sua entrada, que fecha o canal, e zcat
para depois de receber um SIGPIPE
(o que acontece quando o próximo tenta gravar no tubo fechado). Você pode ver isso executando
(zcat logfile.gz; echo $? >&2) | head -n 1
Isso mostrará que zcat
sai com o código 141, o que indica que parou devido a um SIGPIPE
(13 + 128).
Você pode adicionar mais pós-processamento, por exemplo, com o AWK, para extrair apenas a data:
zcat logfile.gz | awk '{ print $1; exit }'