Risposte:
sed
sed 's/\s.*$//'
grep
grep -o '^\S*'
awk
awk '{print $1}'
Come sottolineato nei commenti, -oPOSIX non è; tuttavia sia GNU che BSD ce l'hanno, quindi dovrebbe funzionare per la maggior parte delle persone.
Inoltre, \s/ \Spotrebbe non essere su tutti i sistemi, se il tuo non lo riconosce puoi usare uno spazio letterale, o se vuoi spazio e tabulazione, quelli in una parentesi ( [...]) o la [[:blank:]]classe di caratteri (nota che a rigor di termini\s è equivalente [[:space:]]e include i caratteri di spaziatura verticale e CR, LF o VT che probabilmente non ti interessano).
L' awk uno si assume le linee non iniziano con un carattere vuoto.
cut -d ' ' -f 1 < your-file
sarebbe il più efficiente.
E quello attraverso perl,
$ perl -pe 's/^([^ ]+) .*$/\1/' file
aaaaaaaa
bbbbbbbb
ccccccccccccccc
ddddd
Attraverso GNU grep,
$ grep -oP '^[^ ]*' file
bbbbbbbb
ccccccccccccccc
ddddd
<è utile qui?