regex – 使用sed对URL进行复杂更改

regex – 使用sed对URL进行复杂更改,第1张

概述我试图在 Linux命令行上解析RSS提要,这涉及使用sed格式化feed的原始输出. 我目前使用此命令: feedstail -u http://www.heise.de/newsticker/heise-atom.xml -r -i 60 -f "{published}> {title} {link}" | sed 's/^\(.\{3\}\)\(.\{13\}\)\(.\{6\}\)\(.\ 我试图在 Linux命令行上解析RSS提要,这涉及使用sed格式化Feed的原始输出.

我目前使用此命令:

Feedstail -u http://www.heise.de/newsticker/heise-atom.xml -r -i 60 -f "{published}> {Title} {link}" | sed 's/^\(.\{3\}\)\(.\{13\}\)\(.\{6\}\)\(.\{3\}\)\(.*\)//'

这为我提供了每行的一些Feed项,如下所示:

Sat 20:33 GMT> WhatsApp-Ausfall: Server-Probleme blockIEren Messaging-DIEnst http://www.heise.de/newsticker/meldung/WhatsApp-Ausfall-Server-Probleme-blockIEren-Messaging-DIEnst-2121664.HTML/from/atom10?wt_mc=RSS.ho.beitrag.atom

注意最后的长URL.我想缩短它以更好地适应命令行.因此,我想更改我的sed命令以生成以下内容:

Sat 20:33 GMT> WhatsApp-Ausfall: Server-Probleme blockIEren Messaging-DIEnst http://www.heise.de/-2121664

这意味着除了破折号和“.HTML / blablabla”位之前的七位数字之外,从URL中删除所有内容.

目前我的sed命令只更改日期位中的内容.它必须单独留下标题和开头或URL,然后从中删除它直到达到七位数字.它需要保留它,然后在它之后切断所有东西.哦,是的,我们也需要在这个数字前面留下一个破折号.

我不知道如何做到这一点,并在谷歌搜索后几小时找不到答案.救命?

编辑:

这是一行Feedstail的原始输出-u http://www.heise.de/newsticker/heise-atom.xml -r -i 60 -f“{published}> {Title} {link}”,万一它有帮助:

Sat,22 Feb 2014 20:33:00 GMT> WhatsApp-Ausfall: Server-Probleme blockIEren Messaging-DIEnst http://www.heise.de/newsticker/meldung/WhatsApp-Ausfall-Server-Probleme-blockIEren-Messaging-DIEnst-2121664.HTML/from/atom10?wt_mc=RSS.ho.beitrag.atom

编辑2:

看来我只能把输出输出到一个命令中.通过多个管道进行管道似乎打破了局面.我不明白为什么ATM.

解决方法 不幸的是(对我而言),我只能考虑使用扩展的regexp语法(在不同系统上使用-E或-r标志)来解决这个问题:
... | sed -E 's|(://[^/]+/).*(-[0-9]+)\.HTML/.*||'

更新:在基本的正则表达式语法中,我能做的最好的是

... | sed 's|\(://[^/]*/\).*\(-[0-9][0-9]*\)\.HTML/.*||'
总结

以上是内存溢出为你收集整理的regex – 使用sed对URL进行复杂更改全部内容,希望文章能够帮你解决regex – 使用sed对URL进行复杂更改所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/1049996.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-25
下一篇 2022-05-25

发表评论

登录后才能评论

评论列表(0条)

保存