我有一个 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
,它将被覆盖。还请注意,正则表达式在引号中。如果您的输入或输出文件名包含空格或其他特殊字符,它们也需要引号。