在 Linux 命令行中从源代码中提取特定链接

在 Linux 命令行中从源代码中提取特定链接

我有一个 3000 行的页面源代码文本文件。如何提取类似于下面的特定 URL 并删除其余源代码?

https://d17nygptf7ayu.cloudfront.net/photos/0b1983ccf6bb5674f93b.jpg

当我查看代码时,发现有 60 个链接与上面的链接类似,只是 *.jpg 名称有所变化。

作为一名初学者,我几乎不知道从哪里开始以及在 Linux 命令行上应该使用哪种工具。此外,如何在 notepad++ 中执行此操作?

我想出的正则表达式https\://d17nygptf7ayu\.cloudfront\.net/photos/(?:(?!\.jpg)(?:.|\n))*\.jpg

答案1

这个正则表达式将匹配你想要的 URL:

https\://d17nygptf7ayu\.cloudfront\.net/photos/[0-9a-f]{20}.jpg

以上[0-9a-f]匹配任何小写十六进制数字,并且{20}匹配其中的 20 个。

基于正则表达式搜索的经典且非常有用的 Linux 工具是grep。通常使用-E标志,使其使用扩展正则表达式。该-o标志使其输出仅有的匹配的字符串。(通常grep会输出包含匹配字符串的整行。)有关如何使用 的完整说明grep,请键入man grep

因此,要生成所有匹配的 URL 的列表:

grep -Eo 'https\://d17nygptf7ayu\.cloudfront\.net/photos/[0-9a-f]{20}.jpg' long_text_file.html >output_list_of_urls.txt

请注意,如果您列出的文件已存在output_list_of_urls.txt,它将被覆盖。还请注意,正则表达式在引号中。如果您的输入或输出文件名包含空格或其他特殊字符,它们也需要引号。

相关内容