2014-11-20 67 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 ]*"