gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 20:08:30 25 4
gpt4 key购买 nike

我正在尝试在 Linux 命令行上解析 RSS 提要,这涉及使用 sed 对提要的原始输出进行格式化。

我目前使用这个命令:

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

这给了我每行的许多提要项目,如下所示:
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

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

目前我的 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。

最佳答案

不幸的是(对我而言),我只能考虑使用扩展的正则表达式语法(不同系统上的 -E 或 -r 标志)来解决这个问题:

... | sed -E 's|(://[^/]+/).*(-[0-9]+)\.html/.*|\1\2|'

更新:在基本的正则表达式语法中,我能做的最好的是
... | sed 's|\(://[^/]*/\).*\(-[0-9][0-9]*\)\.html/.*|\1\2|'

关于regex - 使用 sed 对 URL 进行复杂更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21960789/

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