Respostas:
Sed
sed 's/\s.*$//'
Grep
grep -o '^\S*'
Awk
awk '{print $1}'
Como apontado nos comentários, -o
nã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
/ \S
pode 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?