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 têm, então 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 reconhecer você pode usar um espaço literal ou, se desejar espaço e tabulação, aqueles em uma expressão de colchete ( [...]
), ou a classe de caractere [[:blank:]]
(observe que, estritamente falando, \s
é equivalente a [[:space:]]
e inclui caracteres de espaçamento vertical, como CR, LF ou VT, com os quais você provavelmente não se importa).
O awk
um assume que as linhas não começam com um caractere em branco.