我有一个页面的 3000 行源代码文本文件。如何提取类似于下面的特定网址并删除其余源代码?
https://d17nygptf7ayu.cloudfront.net/photos/0b1983ccf6bb5674f93b.jpg
当我浏览代码时,有 60 个链接类似于上面的链接,只是 *.jpg 名称发生了变化。
作为初学者,我最不知道从哪里开始以及应该在 linux 命令行上使用哪个工具。另外我怎么能在记事本++中做到这一点?
我想出的正则表达式https\://d17nygptf7ayu\.cloudfront\.net/photos/(?:(?!\.jpg)(?:.|\n))*\.jpg
此正则表达式将匹配您想要的 URL:
[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
已经存在,它将被覆盖。另请注意,正则表达式是用引号引起来的。如果您的输入或输出文件名包含空格或其他特殊字符,它们也需要引号。