Usando awk
, agindo sobre o número de campos
$ awk 'NF==1{print p "\t" $1; next} {p=$1} 1' ip.txt
john math
john science
paul math
paul science
rosy math
jill science
rob math
rob science
hary math
-
{p=$1} 1
para linhas diferentes do campo único, salve a primeira coluna e imprima a linha -
NF==1{print p "\t" $1; next}
se apenas um campo estiver presente, imprima campo anterior,tab
e o campo da linha de entrada.next
pulará o restante das instruções e processará a próxima linha
Se tab
separação não funcionar, use column
$ awk 'NF==1{print p,$1; next} {p=$1} 1' ip.txt | column -t
john math
john science
paul math
paul science
rosy math
jill science
rob math
rob science
hary math