O awk com um separador de campo "at" também pode funcionar. "^ [" corresponde às linhas que começam com o carimbo de data e $ 1 é o primeiro campo.
awk -F"at" '/^\[/{print $1}' test
Com base no seu comentário e se eu entendi bem o que você precisa, o comando awk deve incluir as linhas que você está procurando com o seu alcance entre as 7 e as 8 horas.
No entanto, parece que você precisa de duas listas. Para fazer isso, você poderia executar o comando awk no seu arquivo de log e enviá-lo para outro arquivo. Você poderia então awk / grep o segundo arquivo.
awk -F"at" '/^\[/{print $1}' test>> ExtractedLogs.txt
awk -F"at" '$1 ~ "07:"{print $1}' ExtractedLogs.txt>> StackTraceOnly.txt