Regex 从vcf文件中提取字符串
我需要从几千万行的Regex 从vcf文件中提取字符串,regex,grep,vcf-variant-call-format,Regex,Grep,Vcf Variant Call Format,我需要从几千万行的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
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
最好避免使用解析VCF/BCF文件。改用:
一个简单的zgrep-oE“RS=[0-9]+”clinvar.vcf.gz
将丢失包含多个ID的记录的RS值,这些ID可以用管道分隔:
##INFO=<ID=RS,Number=.,Type=String,Description="dbSNP ID (i.e. rs number)">
##信息=
当可能值的数量变化、未知或无限制时,数字为
。请参阅:到目前为止,您尝试了什么?我尝试了类似于cat File | grep“RS=(*?)”和grep-o'RS\=*?'所有失败非常感谢您的帮助,grep-oE“RS=\d+”clinvar.vcf对我的案例非常有用。
##INFO=<ID=RS,Number=.,Type=String,Description="dbSNP ID (i.e. rs number)">