首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在expr中进行非贪婪匹配

如何在expr中进行非贪婪匹配
EN

Stack Overflow用户
提问于 2016-04-05 03:17:27
回答 1查看 393关注 0票数 0

我在用bash。我已经尽我所能了。它总是在regexr中工作。它适用于其他文件。对于一个文件,无论什么情况,它都不能工作。我不能用?使量词变得懒惰。我无法隔离dbsnp文件。请帮帮我!

代码语言:javascript
运行
复制
vcfs=$(find . -type f -name "*\.vcf" -printf "%f\n")

echo "$vcfs"

>1000G_omni2.5.b37.vcf

>1000G_phase1.indels.b37.vcf

>1000G_phase1.snps.high_confidence.b37.vcf

>dbsnp_138.b37.vcf

>hapmap_3.3.b37.vcf

>Mills_and_1000G_gold_standard.indels.b37.vcf

thousandG=`expr "$vcfs" : '.*\(1000G_phase1.indels[^\n]*\.vcf\)'`

echo $thousand

>1000G_phase1.indels.b37.vcf

GoldStandard=`expr "$vcfs" : '.*\(Mills_and_1000G_gold_standard.indels[^\n]*\.vcf\)'`

echo $GoldStandard

>Mills_and_1000G_gold_standard.indels.b37.vcf

dbsnp=`expr "$vcfs" : '.*\(dbsnp_[1-9][3-9][3-9][^\n]*\.vcf\)'`

echo $dbsnp

>dbsnp_138.b37.vcf

>hapmap_3.3.b37.vcf

dbsnp=`expr "$vcfs" : '.*\(dbsnp_[1-9][3-9][3-9][^\n]*?\.vcf\)'`

echo $dbsnp

>

dbsnp=`expr "$vcfs" : '.*\(dbsnp_[1-9][3-9][3-9].*?\.vcf\)'`

echo $dbsnp

>

echo `expr "$vcfs" : '.*\(hapmap_[\n]*\.vcf\)'`

>hapmap_3.3.b37.vcf
EN

回答 1

Stack Overflow用户

发布于 2016-04-05 10:17:45

来自expr的手册页:

字符串: REGEX执行模式匹配。参数被强制为字符串,第二个被认为是一个(basic,a la GNU‘`grep')正则表达式

在基本GNU grep正则表达式中,不支持非贪婪匹配修饰符。

考虑使用其他工具,如sedawkgrep -P

在您的特定示例中(文件名中不会有换行符),您可以简单地执行echo "$vcfs" |grep "^dbsnp_[1-9][3-9][3-9].*\.vcf"

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

https://stackoverflow.com/questions/36411056

复制
相关文章

相似问题

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