首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >删除主域之前或正斜杠之后的所有内容

删除主域之前或正斜杠之后的所有内容
EN

Stack Overflow用户
提问于 2021-04-08 10:38:23
回答 2查看 33关注 0票数 0

如何从下面输入的文本中提取域名?我试过了,但它没有像预期的那样工作:

代码语言:javascript
运行
复制
grep -oP '(?<=[.])\w+(?=[.])'

有没有办法在sed/awk或任何其他Linux命令中做到这一点?

输入:

代码语言:javascript
运行
复制
netgear.com
myapi.arlo.com
https://updates.netgear.com/arlo
https://bugcrowd-pub.bounty.accellion.net
client-api.arkoselabs.com

所需输出:

代码语言:javascript
运行
复制
netgear.com
arlo.com
netgear.com
accellion.net
arkoselabs.com
EN

回答 2

Stack Overflow用户

发布于 2021-04-08 10:57:07

感谢谷歌,我找到了很多解决方案,尝试制作我自己的正则表达式,

^((http[s]?|ftp):\/)?\/?([^:\/\s]+)((\/\w+)*\/)([\w\-\.]+[^#?\s]+)(.*)?(#[\w\-]+)?$

[a-zA-Z0-9-]+\.[a-zA-Z]+($|(?=\/))

awk -F"." '{print $(NF-1)"."$NF}'

票数 0
EN

Stack Overflow用户

发布于 2021-04-08 12:49:11

看起来您不仅试图删除/,实际上还试图从这些URL中提取主域。

如果您将输入放在一个名为input.txt的文件中,则以下内容适用于我在Ubuntu20.10上的操作:

cat input.txt | sed -e 's;..(a-zA-Z0-9-.a-zA-Z0-9-).$;\1;‘

简单解释一下:域名的parts(点之间的单词)只能使用数字、字母和破折号作为字符。该模式可以表示为: a-zA-Z0-9-*

上面的正则表达式将匹配其中的两个,由一个点分隔,前面是一个点(可能还有一些字符),后面是行尾或不属于前面组的一组字符。我相信.*的贪婪本质将确保只捕获主域。

可能还有更健壮的解决方案可用。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66996629

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档