2014-11-20 69 views
1

我有一个URL列表,其中一些包括子目录,查询参数等。其他一些是不完整的,并且突然停止空间符号或换行符(例如, http://www.google)。正则表达式从URL列表中获取域(包括顶级)

我想使用一个正则表达式中的grep只匹配结构域(包括协议和顶级域)这些URL,例如,http://www.google.comhttp://www.amazon.com

我用崇高文本2,并用想出了下面的正则表达式,这似乎做的工作:

https?://[^/\n ]* 

使用这种在以下方式grep的,但是,失败:

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

在日e结果,匹配的URL包括子目录,查询路径等。

grep中的正则表达式有什么区别,例如在造成这种行为的Sublime Text中?

+0

你能提供一个样本输入文件以及 – anubhava 2014-11-20 16:26:23

+0

'grep'显示包含正则表达式,而不仅仅是匹配的文本的任何行(整行)。我对“Sublime Text 2”一无所知。 – Jdamian 2014-11-20 17:39:46

+0

@ jdamian这是它没有工作的原因!我使用-o参数改变了行为,现在它按需要工作。我添加了相应的答案。谢谢! – erik13579 2014-11-20 19:34:12

回答

0

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

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