Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex使用grep从html文件中查找外部链接_Regex_Linux_Grep - Fatal编程技术网

Regex使用grep从html文件中查找外部链接

Regex使用grep从html文件中查找外部链接,regex,linux,grep,Regex,Linux,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提供给它的网页中获取所有外部链接

这是我的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>
使用上述输入进行工作 但我无法在grep中复制相同的功能 有人能帮忙吗 我不能修改html文件,所以不要要求我这样做,我也不能查找每个特定的标记并检查它们的属性以获得外部链接,因为这会增加处理时间,而我的应用程序并不要求这样做

谢谢

试试这个:

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

每行输出一个链接。它假定每个链接都在单引号或双引号内。若要排除某些特定域链接,请使用
-v

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

默认情况下,grep打印找到匹配项的整行。
-o
开关仅选择行中匹配的部分。请参阅。

不客气。'Thank'太过分了,接受答案就足够了(:
egrep -o "(mailto|ftp|http(s)?://){1}[^'\"]+" /path/to/file
egrep -o "(mailto|ftp|http(s)?://){1}[^'\"]+" /path/to/file | egrep -v "yahoo.com"