Как заставить grep остановить первый матч на линии?

Ну у меня есть файл test.txt

#test.txt
odsdsdoddf112 test1_for_grep
dad23392eeedJ test2 for grep
Hello World test
garbage

Я хочу извлечь строки, после которых есть пробел. Я использовал следующее выражение, и это сработало

grep -o  [[:alnum:]]*.[[:blank:]]  test.txt

Его вывод

odsdsdoddf112
dad23392eeedJ 
test2 
for    
Hello 
World

Но проблема в том, что grep печатает все строки, у которых есть место после них, где, как я хочу, он останавливается после первого совпадения в строке, а затем переходит ко второй строке.

Какое выражение я должен использовать здесь, чтобы остановить его после первого совпадения и перейти к следующей строке?

Эта проблема может быть решена с помощью gawk или другого инструмента, но я буду признателен за решение, которое использует только grep.

редактировать Я использую GNU grep 2.5.1 в системе Linux, если это уместно.

редактировать

С помощью ответов, приведенных ниже, я попытал счастья с

grep  -o   ^[[:alnum:]]*  test.txt
grep  -Eo  ^[[:alnum:]]+  test.txt

и оба дали мне правильные ответы.

Что меня удивляет, так это то, что я пытался использовать

grep -Eo "^[[:alnum:]]+[[:blank:]]" test.txt

как предложеноВот но не сделалне получить правильный ответ. Вот вывод на мой терминал

odsdsdoddf112
dad23392eeedJ 
test2 
for    
Hello 
World

Но комментарии от RichieHindle и Adrian Pronk, показывают, что они получили правильный вывод в своих системах. Любой, у кого есть идея, почему я тоже не получаю такой же результат в моей системе. Любая идея? Любая помощь будет оценена.

редактировать

Ну, похоже, что у grep 2.5.1 есть какая-то ошибка, из-за которой мой вывод не былне правильно. Я установил grep 2.5.4, теперь он работает правильно. Посмотри пожалуйстаэта ссылка для деталей.

Ответы на вопрос(4)

Ваш ответ на вопрос