从 vcf 文件中提取字符串
Extract a string from vcf file
我需要从几亿行的 vcf
文件中的以下行中提取 RS=368138379
字符串。我想知道我们如何使用 grep -o ""
和正则表达式来快速提取它?
AF_ESP=0.0001;ALLELEID=359042;CLNDISDB=MedGen:C0678202,OMIM:266600;CLNDN=Inflammatory_bowel_disease_1;CLNHGVS=NC_000006.11:g.31779521C>T;CLNREVSTAT=no_assertion_criteria_provided;CLNSIG=association;CLNVC=single_nucleotide_variant;CLNVCSO=SO:0001483;GENEINFO=HSPA1L:3305;MC=SO:0001583|missense_variant;ORIGIN=4;RS=368138379
非常感谢。
类似于 RS=\d+
的内容应该可以解决您正在寻找的表达式。
假设 text.log
包含您可以使用的日志:
grep -oE "RS=[0-9]+" test.log
如果您还想打印行号:
grep -noE "RS=[0-9]+" test.log
最好避免使用 grep to parse VCF/BCF files. Use bcftools query:
bcftools query -f '%INFO/RS\n' -e 'INFO/RS="."' clinvar.vcf.gz
一个简单的 zgrep -oE "RS=[0-9]+" clinvar.vcf.gz
将丢失包含多个 ID 的记录的 RS 值,这些 ID 可以用竖线分隔:
##INFO=<ID=RS,Number=.,Type=String,Description="dbSNP ID (i.e. rs number)">
当可能值的数量变化、未知或无限时,数字为 .
。请参阅:https://samtools.github.io/hts-specs/VCFv4.2.pdf
我需要从几亿行的 vcf
文件中的以下行中提取 RS=368138379
字符串。我想知道我们如何使用 grep -o ""
和正则表达式来快速提取它?
AF_ESP=0.0001;ALLELEID=359042;CLNDISDB=MedGen:C0678202,OMIM:266600;CLNDN=Inflammatory_bowel_disease_1;CLNHGVS=NC_000006.11:g.31779521C>T;CLNREVSTAT=no_assertion_criteria_provided;CLNSIG=association;CLNVC=single_nucleotide_variant;CLNVCSO=SO:0001483;GENEINFO=HSPA1L:3305;MC=SO:0001583|missense_variant;ORIGIN=4;RS=368138379
非常感谢。
类似于 RS=\d+
的内容应该可以解决您正在寻找的表达式。
假设 text.log
包含您可以使用的日志:
grep -oE "RS=[0-9]+" test.log
如果您还想打印行号:
grep -noE "RS=[0-9]+" test.log
最好避免使用 grep to parse VCF/BCF files. Use bcftools query:
bcftools query -f '%INFO/RS\n' -e 'INFO/RS="."' clinvar.vcf.gz
一个简单的 zgrep -oE "RS=[0-9]+" clinvar.vcf.gz
将丢失包含多个 ID 的记录的 RS 值,这些 ID 可以用竖线分隔:
##INFO=<ID=RS,Number=.,Type=String,Description="dbSNP ID (i.e. rs number)">
当可能值的数量变化、未知或无限时,数字为 .
。请参阅:https://samtools.github.io/hts-specs/VCFv4.2.pdf