gpt4 book ai didi

grep - 如何 grep 查找博客中的 URL?

转载 作者:行者123 更新时间:2023-12-02 08:51:06 24 4
gpt4 key购买 nike

我正在编写一个脚本来从我的博客文章中获取 URL 并对它们运行 curl -I 以便我可以检查它们是否仍然有效。但是我在编写 grep 模式时遇到了问题。

<p><a href="http://example.com/fujipol/2004/may/5/16:10:47/400x345">foobar</a></p>

所以在这里我只想要http://example.com/fujipol/2004/may/5/16:10:47/400x345

或者像这样的 Markdown :

[Example markdown link](https://example.com)

想要 https://example.com

<http://example.com/?foo=bar>

在这种情况下,我需要 http://example.com/?foo=bar

最佳答案

使用您示例中的链接创建文件:

$> cat ./text
<p><a href="http://example.com/fujipol/2004/may/5/16:10:47/400x345">foobar</a></p>
[Example markdown link](https://example.com)
<http://example.com/?foo=bar>
<a href="http://people.debian.org/~dilinger/backports/wordpress">http://people.debian.org/~dilinger/backports/wordpress</a>

用一些正则表达式“Greped”它并从中获取所有 url:

$> grep --only-matching --perl-regexp "http(s?):\/\/[^ \"\(\)\<\>]*" ./text
http://example.com/fujipol/2004/may/5/16:10:47/400x345
https://example.com
http://example.com/?foo=bar
http://people.debian.org/~dilinger/backports/wordpress
http://people.debian.org/~dilinger/backports/wordpress

完成。

http(s?):\/\/[^ \"\(\)\<\>]*

我们在这里所做的是匹配 http(s) (url 可以以 http://https:// 开头),而不是我们匹配的 //并逃脱了。最后我们匹配了不等于 的符号序列或 "()<> .

最后,像这样的任务中的整个问题是弄清楚我如何决定我们需要的部分开始(在这种情况下为 http(s)://)和结束("()< , > )。

坦率地说,这个解决方案并不完美。一些 url 标准说了更多关于 url 可以包含或不能包含的符号的信息。所以,您马上就会发现,在我的回答中使用的正则表达式是无效的。但在您描述的情况下,它会大卖。

关于grep - 如何 grep 查找博客中的 URL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8501476/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com