我正在使用EGREP正则表达式搜索包含URL的文件中的某些模式。我想在每一行中找到第一个实例。例如,这是我的正则表达式:
egrep -io '^\<http(s)://home\>+\..+\.gov(\.au)?' input.txt
输出此实例:
https://home.xxx.gov/uuu.aspx?url=https://home.xxx.gov
但我在这个具体例子中真正寻找的是:
https://home.xxx.gov
我不关心.gov之后会发生什么,我想修剪它。我怎么能这样做?
答案 0 :(得分:2)
您需要一个lazy quantifier,为此你需要Perl风格的正则表达式:
egrep -P -io '^https?://home\..+?\.gov(\.au|\.uk)?' input.txt
如果您的egrep
不支持Perl正则表达式,则需要找到不同的方式,例如
egrep -io '^https?://home\.[A-Za-z0-9.]+\.gov(\.au|\.uk)?' input.txt
或
egrep -io '^https?://home\.[^/]+\.gov(\.au|\.uk)?' input.txt
限制正则表达式可能匹配的字符范围。另见@ sshashank124的解决方案。
答案 1 :(得分:1)
你可以这样做:
^\<https?://home\.\w+\.gov(\.au|\.uk)?