Para obter as primeiras colunas em cada linha usando o awk, você pode fazer o seguinte:
cat test| awk '{print $1}'
aaa
aaa
aaa
www
hhh
hhh
Estas são suas chaves para o resto das linhas. Então você pode criar uma tabela de hash, usando a primeira coluna como uma chave e a segunda coluna da linha como o valor:
cat test| awk '{table[$1]=table[$1] $2;} END {for (key in table) print key " => " table[key];}'
www => yyy
aaa => bbbNULLbbb
hhh => 111111
Para obter todo o resto da linha, começando pela coluna 2, você precisa coletar todas as colunas:
cat test| awk '{line="";for (i = 2; i <= NF; i++) line = line $i " "; table[$1]=table[$1] line;} END {for (key in table) print key " => " table[key];}'
www => yyy hhh NULL NULL NULL NULL
aaa => bbb ccc ddd NULL NULL NULL NULL NULL NULL NULL NULL NULL bbb ccc NULL NULL NULL NULL
hhh => 111 333 yyy ooo hyy uuuioooy 111 333 yyy ooo hyy NULL
É isso aí, espero que ajude; -)