首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >匹配字符串的一部分

匹配字符串的一部分
EN

Stack Overflow用户
提问于 2016-08-05 23:11:34
回答 3查看 52关注 0票数 1

假设我有一个字符串,比如

代码语言:javascript
复制
s1="sxfn://xfn.oxbr.ac.uk:8843/xfn/mech2?XFN=/castor/
    xf.oxbr.ac.uk/prod/oxbr.ac.uk/disk/xf20.m.ac.uk/prod/v1.8/pienug_ib-2/reco_c21_dr3809_r35057.dst"

代码语言:javascript
复制
s2="sxfn://xfn.gla.ac.uk:8841/xfn/mech2?XFN=/castor/
    xf.gla.ac.uk/space/disk1/prod/v1.8/pienug_ib-2/reco_c21_dr3809_r35057.dst"

我希望在我的脚本中提取从prod/开始的最后一部分,即"prod/v1.8/pienug_ib-2/reco_c21_dr3809_r35057.dst“。请注意,$s1包含两次出现的"prod/“。

在bash中,最优雅的方式是什么?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-08-05 23:16:16

使用BASH字符串操作,您可以执行以下操作:

代码语言:javascript
复制
echo "prod/${s1##*prod/}"
prod/v1.8/pienug_ib-2/reco_c21_dr3809_r35057.dst

echo "prod/${s2##*prod/}"
prod/v1.8/pienug_ib-2/reco_c21_dr3809_r35057.dst
票数 1
EN

Stack Overflow用户

发布于 2016-08-05 23:15:09

使用awk (它在这方面有点强大,但如果您有一个充满这些字符串的文件,那么它可能会有所帮助:

代码语言:javascript
复制
echo "sxfn://xfn.gla.ac.uk:8841/xfn/mech2?XFN=/castor/xf.gla.ac.uk/space/disk1/prod/v1.8/pienug_ib-2/reco_c21_dr3809_r35057.dst" | awk -F"\/prod" '{print "/prod"$NF}'

这就是用'/prod‘拆分字符串,然后打印出'/prod’分隔符和字符串中的最后一个标记($NF)

票数 0
EN

Stack Overflow用户

发布于 2016-08-05 23:18:56

sed可以很好地做到这一点:

代码语言:javascript
复制
s1="sxfn://xfn.oxbr.ac.uk:8843/xfn/mech2?XFN=/castor/xf.oxbr.ac.uk/prod/oxbr.ac.uk/disk/xf20.m.ac.uk/prod/v1.8/pienug_ib-2/reco_c21_dr3809_r35057.dst"
echo "$s1" | sed 's/.*\/prod/\/prod/'

这依赖于.*部分的早期匹配。

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

https://stackoverflow.com/questions/38792555

复制
相关文章

相似问题

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