【发布时间】:2018-11-11 16:42:20
【问题描述】:
我正在尝试在不存在的行中添加一个“chr”字符串。此操作仅在没有'##' 的行中是必需的。 起初我使用 grep + sed 命令,如下所示,但我想运行命令覆盖原始文件。
grep -v "^#" 5b110660bf55f80059c0ef52.vcf | grep -v 'chr' | sed 's/^/chr/g'
所以,要在文件中运行命令,我会这样写:
sed -i -E '/^#.*$|^chr.*$/ s/^/chr/' 5b110660bf55f80059c0ef52.vcf
这是vcf文件的内容。
##FORMAT=<ID=DP4,Number=4,Type=Integer,Description="#ref plus strand,#ref minus strand, #alt plus strand, #alt minus strand">
#CHROM POS ID REF ALT QUAL FILTER INFO FORMAT 24430-0009S21_GM17-12140
1 955597 95692 G T 1382 PASS VARTYPE=1;BGN=0.00134309;ARL=150;DER=53;DEA=55;QR=40;QA=39;PBP=1091;PBM=300;TYPE=SNP;DBXREF=dbSNP:rs115173026,g1000:0.2825,esp5400:0.2755,ExAC:0.2290,clinvar:rs115173026,CLNSIG:2,CLNREVSTAT:mult,CLNSIGLAB:Benign;SGVEP=AGRN|+|NM_198576|1|c.45G>T|p.:(p.Pro15Pro)|synonymous GT:DP:AD:DP4 0/1:125:64,61:50,14,48,13
chr1 957898 82729935 G T 1214 off_target VARTYPE=1;BGN=0.00113362;ARL=149;DER=50;DEA=55;QR=38;QA=40;PBP=245;PBM=978;NVF=0.53;TYPE=SNP;DBXREF=dbSNP:rs2799064,g1000:0.3285;SGVEP=AGRN|+|NM_198576|2|c.463+56G>T|.|intronic GT:DP:AD:DP4 0/1:98:47,51:9,38,10,41
【问题讨论】:
-
发布预期结果
-
与其尝试匹配不存在的内容,不如匹配存在的内容?例如,所有不以
#或chr开头的行是否已经总是以数字开头?在这种情况下,您可以编写如下内容:sed -i "s/^\([0-9]\)/chr\1/" blah-blah.vcf -
@lurker 你是对的:它有效!非常感谢!
标签: regex shell unix sed vcf-variant-call-format