如何grep文件中的URL?

时间:2012-11-28 18:29:49

标签: regex grep

例如,我有一个包含img网址的巨大HTML文件:http://ex.example.com/hIh39j+ud9wr4/Uusfh.jpeg

我想获取此网址,假设它是整个文件中仅网址。

cat file.html | grep -o 'http://ex[a-zA-Z.-]*/[a-zA-Z.-]*/[a-zA-Z.,-]*'

如果网址没有加号,则

我如何为+标志工作?

2 个答案:

答案 0 :(得分:4)

你错过了角色类0-9 (也无用猫)

grep -o 'http://ex[a-zA-Z.-]*/[a-zA-Z0-9+-]*/[a-zA-Z0-9.,-+]*' file.html

略有改进,使用-i表示不区分大小写,只匹配图片.jpg.jpeg

grep -io 'http://ex[a-z.-]*/[a-z0-9+-]*/[a-z0-9.,-+]*[.jpe?g]' file.html

或者只是:

grep -io 'http://ex.example.*[.jpe?g]' file.html

答案 1 :(得分:1)

以下针对此特定案例修复了您的regular expression (包括数字和加号):

http://ex[a-zA-Z.-]*/[a-zA-Z0-9.+-]*/[a-zA-Z0-9.+-]*

演示:

echo "For example, I have a huge HTML file that contains img URL: http://ex.example.com/hIh39j+ud9wr4/Uusfh.jpeg"

我想获取此网址,假设它是整个文件中唯一的网址。

cat file.html | grep -o 'http://ex[a-zA-Z.-]*/[a-zA-Z.-]*/[a-zA-Z.,-]*'

仅当URL没有加号时才有效。我如何为+标志工作?

cat file.html| grep -o 'http://ex[a-zA-Z.-]*/[a-zA-Z0-9.+-]*/[a-zA-Z0-9.+-]*'

输出:

http://ex.example.com/hIh39j+ud9wr4/Uusfh.jpeg

提取所有有效的网址。此网站上有关于网址匹配的其他答案的