Respostas:
Sed
sed 's/\s.*$//'
Grep
grep -o '^\S*'
Awk
awk '{print $1}'
Como apontado nos comentários, -onão é POSIX; no entanto, tanto o GNU quanto o BSD o possuem, portanto ele deve funcionar para a maioria das pessoas.
Além disso, \s/ \Spode não estar em todos os sistemas. Se o seu não o reconhecer, você poderá usar um espaço literal, ou se desejar espaço e tabulação, aqueles em uma expressão entre colchetes ( [...]) ou a [[:blank:]]classe de caractere (observe que, estritamente falando, \sé equivalente [[:space:]]ae inclui caracteres de espaçamento vertical, bem como CR, LF ou VT, dos quais você provavelmente não se importa).
O awk supõe-se as linhas não começar com um personagem em branco.
cut -d ' ' -f 1 < your-file
seria o mais eficiente.
E a única perl,
$ perl -pe 's/^([^ ]+) .*$/\1/' file
aaaaaaaa
bbbbbbbb
ccccccccccccccc
ddddd
Através do GNU grep,
$ grep -oP '^[^ ]*' file
bbbbbbbb
ccccccccccccccc
ddddd
<é útil aqui?