如何grep文件中的URL?

Leo*_*tik 8 regex grep

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

我想得到这个 URL,假设它是整个文件中唯一的URL。

cat file.html | grep -o 'http://ex[a-zA-Z.-]*/[a-zA-Z.-]*/[a-zA-Z.,-]*'
Run Code Online (Sandbox Code Playgroud)

在 URL 没有加号时才有效

我如何为 + 符号工作?

Chr*_*our 7

您错过了字符类0-9 (也无用地使用了 cat)

grep -o 'http://ex[a-zA-Z.-]*/[a-zA-Z0-9+-]*/[a-zA-Z0-9.,-+]*' file.html
Run Code Online (Sandbox Code Playgroud)

略有改进,-i用于不区分大小写且仅匹配图像.jpg.jpeg.

grep -io 'http://ex[a-z.-]*/[a-z0-9+-]*/[a-z0-9.,-+]*[.jpe?g]' file.html
Run Code Online (Sandbox Code Playgroud)

或者如何:

grep -io 'http://ex.example.*[.jpe?g]' file.html
Run Code Online (Sandbox Code Playgroud)

  • 我的 Mac 上的 Grep 似乎不支持第一个和第二个正则表达式。我必须将最后一个范围中的连字符移到范围表达式的末尾: `grep -o 'http://ex[a-zA-Z.-]*/[a-zA-Z0-9+-] */[a-zA-Z0-9.,+-]*' file.html` 分别 `grep -io 'http://ex[az.-]*/[a-z0-9+-]*/[a-z0-9.,+-]*[.jpe?g]' file.html ` (2认同)