Проблема с grep -o regex

Я пытаюсь использовать команду grep с флагом -only-matching, но он не ведет себя так, как я ожидал бы.

Эта команда:

echo "1/2/3/4/5" | grep -oE "^([^/]+/){0,2}"

Дает этот результат:

 1/2/ 3/4/ 

Я ожидал всего 1/2/

Что происходит..? 3/4/ не должно совпадать с "^([^/]+/){0,2}" потому что оно не находится в начале строки.

( работает GNU grep 2.5.1 )

  • Как найти несколько строк в файлах?
  • Как отобразить номер строки при выполнении grep в файле
  • grep содержимое файлов на основе списка файлов
  • переформатируйте текстовый файл, чтобы иметь весь текст в одной строке, используя CentOS 5.6
  • Количество файлов, содержащих заданную строку
  • grep неправильно читает шаблон из переменной
  • Использование Perl-совместимого регулярного выражения с GNU grep -P
  • заменить текст после матча
  • One Solution collect form web for “Проблема с grep -o regex”

    Это была ошибка в версиях GNU Grep раньше, чем эта фиксация (т.е. раньше, чем версия GNU версии 2.5.3 ).

    Цитирование соответствующей части журнала изменений:

     Previously failing tests relative to left anchors (^ and \<) and -w should now pass. 

    Первоначальная фиксация, которая описала ошибку, также добавила для нее тест:

     # End of a previous match should not match a "start of ..." expression. grep_test "word_word/" "word_/" "^word_*" -o 
    Linux и Unix - лучшая ОС в мире.