Use T como o delimitador de campo e verifique se há cadeias semelhantes a data explicitamente. Por exemplo, para dividir por ano:
awk -FT '($1~/^[0-9]+-[0-9]+-[0-9]+$/){d=substr($1,1,4)}{print > d".log"}' logfile
E por ano + mês:
awk -FT '($1~/^[0-9]+-[0-9]+-[0-9]+$/){split($1,d,"-")}{print > d[1]d[2]".log"}' logfile
Aqui, verificamos que o primeiro campo (definido por T , portanto, toda a data nas linhas que começam com datas, é o que -FT significa) é um conjunto de 3 números separados por - . Se for, para obter o ano, extraímos os primeiros 4 caracteres ( d=substr($1,1,4) ) e, para obter o mês, dividimos o primeiro campo em - , salvando as sequências resultantes na matriz d ( split($1,d,"-") ), e use os primeiros dois elementos da matriz ( d[1]d[2] ) para o nome do arquivo.