Проблема с 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 )

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 
  • Разделить аналогичные строки
  • Журнал Grep и получение текста между разделителями журналов
  • извлечь столбец из большого текстового файла
  • Имитированное выражение «и» в grep, которое не является специфичным для заказа
  • Как grep «& amount»?
  • Используйте команду grep и найдите
  • Фильтрация результатов grep с помощью путей, содержащих папку1 / folder2, и обрезание текущего пути папки из набора результатов
  • Поиск и замена полной строки в рекурсивных файлах
  • Как искать и заменять текст во всех php-файлах в каталоге и в его подкаталогах
  • Оператор grep +
  • Как выполнить вывод grep netcat
  • Команда Unix для поиска слова в файле
  • Linux и Unix - лучшая ОС в мире.