从大文件中提取 URL

从大文件中提取 URL

我在这里看到了很多答案,但它们(主要)是关于 HTML 文件的,就我而言,我没有 HTML 文件,只有一个 2GB 文件,其中包括我想要提取的随机数据和 URL,但是URL 有时会与我不希望出现在输出中的随机数据/文本混合

这是一个示例:

https://example.com/";}i:41067;a:10:{s:3

答案1

根据https://stackoverflow.com/a/7109208/1745001URL 中的有效字符是:

AZ, az, 0-9, -, ., _, ~, :, /, ?, #, [, ], @, !, $, &, ', (, ), *, +, ,, ;, %,并且=

所以如果我们假设这是真的那么你可以尝试:

grep -o -E "https?://[][[:alnum:]._~:/?#@!$&'()*+,;%=-]+" file

它仍然可能不是 100% 准确,因为其中一些字符只能存在于特定上下文中,但这可能是使用简单的 grep/regexp 可以做到的最好的。

如果你的 grep 支持它,为了一点额外的约束,在太\<之前添加一个字边界(例如在 GNU grep 中)http

答案2

阅读man grep并做类似的事情

grep -o -E 'https?://[^"]+' the_file

相关内容