0

我需要从几万行文件中的RS=368138379以下行中提取字符串。vcf我想知道我们如何使用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

确实非常感谢。

4

3 回答 3

1

类似的东西RS=\d+应该可以解决您正在寻找的表达式。

于 2018-02-26T23:01:30.773 回答
0

最好避免使用解析 VCF/BCF 文件。请改用bcftools 查询

bcftools query -f '%INFO/RS\n' -e 'INFO/RS="."' clinvar.vcf.gz

一个简单的zgrep -oE "RS=[0-9]+" clinvar.vcf.gz将丢失包含多个 ID 的记录的 RS 值,可以用竖线分隔:

##INFO=<ID=RS,Number=.,Type=String,Description="dbSNP ID (i.e. rs number)">

数字是.指可能值的数量变化、未知或无界的情况。请参阅:https ://samtools.github.io/hts-specs/VCFv4.2.pdf

于 2021-01-03T15:01:36.157 回答
0

假设text.log包含您可以使用的日志:

grep -oE "RS=[0-9]+" test.log

如果您还想打印行号:

grep -noE "RS=[0-9]+" test.log
于 2018-02-26T23:20:08.660 回答