Regex 正则表达式从URL列表中获取域(包括顶级)

Regex 正则表达式从URL列表中获取域(包括顶级),regex,bash,grep,sublimetext2,Regex,Bash,Grep,Sublimetext2,我有一个URL列表,其中一些包含子目录、查询参数等。其他URL不完整,并突然停止,带有空格符号或换行符(例如) 我想在grep中使用regex来只匹配这些url的域(包括协议和顶级域),例如,等等 我使用了Sublime Text 2,并提出了以下正则表达式,似乎可以完成这项工作: https?://[^/\n ]* 但是,以以下方式在grep中使用此选项会失败: grep -E "https?://[^/\n ]*" 在结果中,URL被匹配,包括子目录、查询路径等 grep中的正则表达式与

我有一个URL列表,其中一些包含子目录、查询参数等。其他URL不完整,并突然停止,带有空格符号或换行符(例如)

我想在grep中使用regex来只匹配这些url的域(包括协议和顶级域),例如,等等

我使用了Sublime Text 2,并提出了以下正则表达式,似乎可以完成这项工作:

https?://[^/\n ]*
但是,以以下方式在grep中使用此选项会失败:

grep -E "https?://[^/\n ]*"
在结果中,URL被匹配,包括子目录、查询路径等


grep中的正则表达式与Sublime文本中的正则表达式之间有什么区别导致了这种行为?

@Jdamian在问题下方的评论中指出了答案。Grep选择了整行(包括不需要的子目录和查询)。使用-o参数,一切都按预期进行。因此,我需要的完整命令是:

grep -Eo "https?://[^/\n ]*"

您是否也可以提供一个示例输入文件
grep
显示包含正则表达式的任何行(整行),而不仅仅是匹配的文本。我对
Sublime Text 2
@jdamian一无所知,这就是它不起作用的原因!我使用-o参数更改了行为,现在它可以根据需要工作。我补充了相应的答案。谢谢