Получить все вхождения шаблона поиска - PullRequest
0 голосов
/ 15 августа 2010

Я пытаюсь получить все вхождения шаблона из файла, но в настоящее время у меня не получается, если в строке более одного вхождения.

Пример строки в файле:

lorem ipsum foo="match1" lorem ipsum foo="match2" lorem ipsum

Я хочу получить вывод:

match1 match2

Я попытался получить это с помощью sed:

sed -ne 's/^.*foo="\([^"]*\)".*$/\1/p'

С этим выражением я получаю только первый случай, но я не знаю, как его сделатьлучше.

Ответы [ 3 ]

2 голосов
/ 15 августа 2010

Используйте grep вместо sed.

grep -o -P '(?<=foo=")[^"]*'
0 голосов
/ 15 августа 2010

Это показывает, что вы, вероятно, не хотите использовать sed.Это работает и довольно надежно, но может не работать в некоторых случаях:

sed -n 's/\(foo="[^"]*\)/\n\1\n/g;s/[^\n]*\n*foo="//g;s/\n"[^n]*$//p' file
0 голосов
/ 15 августа 2010
$ s="lorem ipsum foo="match1" lorem ipsum foo="match2" lorem ipsum"
$ echo $s|tr "[ \t]" "\n"|awk -F"=" '$1=="foo"{print $2}'
match1
match2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...