У меня есть следующая строка текста в файле:
(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:
-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
(http://onsnetwork.org/kubu4/
Я просто не уверен, почему часть регулярного выражения grep заставляет grep возвращать всю строку вместо каждого совпадения.
Вы должны проверить URL, которые внутри круглые скобки:
grep -o '(http://onsnetwork.org/kubu4/[^)]*/)' # So, [^)]* and not .*
С .*/, grep при извлечении из ( до последнего /, с которым встречались.
.*/
(
/