代码之家  ›  专栏  ›  技术社区  ›  abalter

Regex捕获组在regex101中工作,而不是sed

  •  0
  • abalter  · 技术社区  · 2 年前

    我找到了其他一些标题类似的问题,但没有找到答案。

    我的文字是:

    ##bcftools_mergeCommand=merge --force-samples -m none -O v -o analysis/STUDY1/hg19/exome/merged.vcf --threads 4 analysis/STUDY1/hg19/exome/varscan_norm.vcf.gz analysis/STUDY1/hg19/exome/gatk_norm.vcf.gz analysis/STUDY1/hg19/exome/samtools_norm.vcf.gz analysis/STUDY1/hg19/exome/freebayes_norm.vcf.gz
    

    我要你的名字。vcf。gz文件。

    塞德告诉我:

    echo "##bcftools_mergeCommand=merge --force-samples -m none -O v -o analysis/STUDY1/hg19/exome/merged.vcf --threads 4 analysis/STUDY1/hg19/exome/varscan_norm.vcf.gz analysis/STUDY1/hg19/exome/gatk_norm.vcf.gz analysis/STUDY1/hg19/exome/samtools_norm.vcf.gz analysis/STUDY1/hg19/exome/freebayes_norm.vcf.gz" | sed -En 's/\/([^\/]+\.vcf\.gz)/\1/g'
    

    结果是空白的。

    Regex101给出:

    enter image description here

    https://regex101.com/r/h3OGvN/1

    1 回复  |  直到 2 年前
        1
  •  1
  •   Cubix48    2 年前

    为什么不使用grep呢?

    $ data='##bcftools_mergeCommand=merge --force-samples -m none -O v -o analysis/STUDY1/hg19/exome/merged.vcf --threads 4 analysis/STUDY1/hg19/exome/varscan_norm.vcf.gz analysis/STUDY1/hg19/exome/gatk_norm.vcf.gz analysis/STUDY1/hg19/exome/samtools_norm.vcf.gz analysis/STUDY1/hg19/exome/freebayes_norm.vcf.gz'
    $ echo $data | grep -Eo [^\/]+\.vcf\.gz
    varscan_norm.vcf.gz
    gatk_norm.vcf.gz
    samtools_norm.vcf.gz
    freebayes_norm.vcf.gz
    

    • -E :将模式解释为扩展正则表达式。
    • -o :仅打印匹配的(非空)零件。
        2
  •  0
  •   tripleee    2 年前

    Regex101支持的regex方言与 sed 理解。

    具体地说,(去掉超级生物) g 标记并)添加一个 p 标记打印匹配行以修复此特定脚本;但在一般情况下,不要依赖一个不直接支持你真正想要使用的工具。