簡體   English   中英

正則表達式使用grep從html文件中查找外部鏈接

[英]Regex to find external links from the html file using grep

從過去的幾天開始,我正在嘗試開發一個正則表達式,使用grep從提供給它的網頁中獲取所有外部鏈接。

這是我的grep命令

grep -h -o -e "\(\(mailto:\|\(\(ht\|f\)tp\(s\?\)\)\)\://\)\{1\}\(.*\?\)" "/mnt/websites_folder/folder_to_search" -r 

現在grep似乎返回該給定行中的外部鏈接之后的所有內容

如果一個html文件在同一行包含這樣的東西

谷歌

https://yahoo.com'>雅虎

然后給定的grep命令返回以下結果

http://www.google.com">Google</a><p><a href='https://yahoo.com'>Yahoo</a></p>

這里的想法是,如果一個html文件在同一行中包含多個鏈接( irrespective in a,img etc ),那么正則表達式應該只獲取鏈接而不是該行的所有內容

我設法在rubular.com中開發了相同的正則表達式如下

("|')(\b((ht|f)tps?:\/\/)(.*?)\b)("|')

與上面的輸入工作,但我不能在grep中復制相同的任何人可以幫助我無法修改html文件,所以不要求我這樣做,我也不能尋找每個特定的標簽,並檢查他們的屬性到得到外部鏈接,因為它加占處理時間,我的應用程序不要求

謝謝

試試這個:

cat / path / to / file | egrep -o“(mailto | ftp | http(s)?://){1} [^'\\”] +“

egrep -o "(mailto|ftp|http(s)?://){1}[^'\"]+" /path/to/file

每行輸出一個鏈接。 它假設每個鏈接都在單引號或雙引號內。 要排除某些某些域鏈接,請使用-v

egrep -o "(mailto|ftp|http(s)?://){1}[^'\"]+" /path/to/file | egrep -v "yahoo.com"

默認情況下,grep會打印出找到匹配項的整行。 -o開關僅選擇一行的匹配部分。 請參見手冊頁

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM