首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从行尾抓取两个单词

从行尾抓取两个单词
EN

Stack Overflow用户
提问于 2022-06-07 12:50:50
回答 1查看 39关注 0票数 0

我有一个子域的file list,我只想获取域名,这是从行的末尾用.分隔符分隔的两个单词。说明:

代码语言:javascript
复制
blog.clova.line.me
to
line.me

从插图中,我执行了下面的命令来剥离子域

代码语言:javascript
复制
cut -d "." -f "2-3"

上面的命令只对3个深子域起作用,结果是:只有当中间字符串大于3+深度时才能得到。

代码语言:javascript
复制
clova.line.me -> line.me
blog.clova.line.me -> clova.line

因此,我不得不使用shell脚本,如下所示:

代码语言:javascript
复制
while read -r line; do for $(tr -cd "." << ${line} | wc -c) in i; if $i == 2; do cut -d "." -f "2-3"; else if $i == 3; do cut -d "." - f "3-4"
  
and so-on

我认为这并不有效,因为它每次检查一行是否有.字符的数字。我试着用regex:

代码语言:javascript
复制
([a-z]*)\.([a-z]*)$

上面的正则表达式不起作用,特别是当域之间有特殊字符时。

代码语言:javascript
复制
mobile.amazon-aws.com --> aws.com
branch.line-dev.net --> dev.net
git.line-apps-dev.net --> dev.net
yugioh.line-games-de-dev.net > dev.net

摘要:

length

  • Domain可以用1+:-

  • :抓取域从具有

以上规则的子域列表中分离

任何帮助都是值得珍惜的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-06-07 12:53:58

只需将字符-包含在regex ([a-z-]*)\.([a-z]*)$中即可。

演示:https://regex101.com/r/Yn9Aqm/1

替代方案:您可能需要用点来标记字符串。然后选择数组的最后两个项。这比使用正则表达式容易。

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

https://stackoverflow.com/questions/72531533

复制
相关文章

相似问题

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