Aqui está um comando básico que você pode adaptar às suas necessidades individuais.
awk '{print $0 > $1}' inputfile
EDIT: desculpas, eu só percebi que eu interpretei mal a sua pergunta, esta não é a resposta correta, embora você possa 'reingressar' os arquivos com as linhas em branco facilmente o suficiente
Aqui está uma possível solução
for file in $(awk '{print $1; print $0 > $1}' data.txt | sort | uniq)
do
cat $file
echo
rm $file
done > output.txt
Solução apenas usando o awk, se o arquivo estiver pré-classificado:
awk '{a=$1; if (b != "" && a != b) {printf "\n";}; print $0; b = a}' inputfile
Retrabalhada após comentários de don_crissti (obrigado!)
awk '{if (a != "" && a != $1) {printf "\n";}; print $0; a = $1}' inputfile