De acordo com a seção IO do manual da versão 1.5 jq só pode gravar na saída padrão e imprimir mensagens de depuração para stderr
.
O que você poderia fazer se não quiser executar o jq em test.log
várias vezes, por exemplo, porque é um arquivo grande, é
jq -c '(select(.type=="1") | {fname:.fname}), (select(.type=="3") | {city:.city})' test.log > temp
# The file 'temp' contains one entry per line.
grep '^{"fname"' temp > type_1.txt
grep '^{"city"' temp > type_3.txt
rm temp