我在文件中包含以下文本行:
(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
返回整行,而不是每次匹配都返回。
答案 0 :(得分:1)
您应检查内部括号中的网址:
grep -o '(http://onsnetwork.org/kubu4/[^)]*/)' # So, [^)]* and not .*
使用.*/
时,grep从(
提取到遇到的最后一个/
。