while read -r tag line; do
printf '%s\n' "$line" >"$tag".txt
done <text.in
Quando você lê duas variáveis com read , a primeira palavra é colocada na primeira variável e o restante da linha é colocada na segunda.
O que constitui uma "palavra" depende do valor de $IFS . Por padrão, read dividirá a linha em palavras com base em espaços, tabulações ou novas linhas.
O loop usa isso para enviar a linha (menos a primeira palavra, ou "tag") para um arquivo cujo nome é retirado do início da linha.