Найти каждое вхождение регулярного выражения в файле - PullRequest
2 голосов
/ 23 сентября 2011

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

Example:
XXXXXXXXXX FOO3 XXXX FOO4 XXX
XXX FOO2 XXXX FOO9 XXXXXX FOO5

The result should be:
FOO3
FOO4
FOO2
FOO9
FOO5

В этом случае регулярное выражение будет /FOO./.

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

Ответы [ 3 ]

7 голосов
/ 23 сентября 2011

Вы пробовали опцию -o: ( страница справки grep )

-o, --only-Match Показать только ту часть совпадающей строки, которая соответствует ОБРАЗЕЦ.

5 голосов
/ 23 сентября 2011

Ваш вопрос не совсем понятен, тем более что пример данных является супер общим.Но вот несколько шаблонов, которые могут совпадать:

Ваш шаблон соответствует FOO, за которым следует любой символ, который будет соответствовать всему, до конца строки.Я не думаю, что вы хотите этого, поэтому попробуйте что-то вроде этого:

/FOO[0-9]+/ - соответствует FOO, за которым следует одно или несколько чисел.

/FOO[^ ]+/ - соответствует FOO, за которым следует любой символэто НЕ пробел.Это может быть лучшим решением, учитывая ваш пример шаблона.

/FOO[0-9a-zA-Z]+/ - соответствует FOO, за которым следует любой буквенно-цифровой символ

4 голосов
/ 23 сентября 2011

Использовать grep -o FOO. (-o: показать только совпадение)

Ваше регулярное выражение может быть даже расширено, чтобы соответствовать только FOO, за которым следует число, вместо любого символа (. также будет совпадать с пробелом!)):

<yourfile grep -o 'FOO[0-9]'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...