grep -o несколько вхождений переменной строки в одной строке - PullRequest
0 голосов
/ 08 ноября 2018

У меня есть следующая строка текста в файле:

(http://onsnetwork.org/kubu4/2018/10/16/qpcr-c-gigas-primer-and-gdna-tests-with-18s-and-ef1-primers/), I checked Ronit's [DNased ctenidia RNA (from 20181016)](http://onsnetwork.org/kubu4/2018/10/16/dnase-treatment-ronits-c-gigas-ploiyddessication-ctenidia-rna/)

Я хотел бы извлечь каждую из строк, которые соответствуют этому шаблону:

(http://onsnetwork.org/kubu4/.*/)

Я попробовал следующую команду, но она возвращает всю строку, несмотря на флаг -o:

grep -o "(http://onsnetwork.org/kubu4/.*/)" file.txt

Я хотел бы получить следующий вывод:

(http://onsnetwork.org/kubu4/2018/10/16/qpcr-c-gigas-primer-and-gdna-tests-with-18s-and-ef1-primers/)
(http://onsnetwork.org/kubu4/2018/10/16/dnase-treatment-ronits-c-gigas-ploiyddessication-ctenidia-rna/)

Я буду применять команду grep к ряду файлов, которые будут иметь различный текст после (http://onsnetwork.org/kubu4/, поэтому команда должна учитывать эту гибкость.

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

1 Ответ

0 голосов
/ 08 ноября 2018

Вы должны проверить URL, которые внутри круглые скобки:

grep -o '(http://onsnetwork.org/kubu4/[^)]*/)' # So, [^)]* and not .*

С .*/, grep при извлечении из ( до последнего /, с которым встречались.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...