Как заставить 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, теперь он работает правильно. Посмотри пожалуйстаэта ссылка для деталей.