首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >以#符号开头的awk重复行

以#符号开头的awk重复行
EN

Stack Overflow用户
提问于 2017-11-30 13:56:53
回答 1查看 61关注 0票数 1

在下面的awk中,有一种只处理模式#CHROM下面的行的方法,但是要打印输出中的所有行。我遇到的问题是,如果忽略所有带有#的行,它们都会在输出中打印,但是没有#的其他行会被复制。在我的数据文件中有数千行,但是只有下面的单一格式是由awk更新的。谢谢:)。

文件 tab-delimited

代码语言:javascript
复制
##bcftools_normVersion=1.3.1+htslib-1.3.1
##bcftools_normCommand=norm -m-both -o genome_split.vcf genome.vcf.gz
##bcftools_normCommand=norm -f /home/cmccabe/Desktop/NGS/picard-tools-1.140/resources/ucsc.hg19.fasta -o genome_annovar.vcf genome_split.vcf
#CHROM  POS ID  REF ALT QUAL    FILTER  INFO    FORMAT
chr1    948797  .   C   .   0   PASS    DP=159;END=948845;MAX_DP=224;MIN_DP=95  GT:DP:MIN_DP:MAX_DP 0/0:159:95:224

awk

代码语言:javascript
复制
awk '!/^#/
BEGIN {FS = OFS = "\t"
}
NF == 10 {
split($8, a, /[=;]/)
$11 = $12 = $13 = $14 = $15 = $18 = "."
$16 = (a[1] == "DP") ? a[2] : "DP=num_Missing"
$17 = "homref"
}
1' out > ref

电流输出 tab-delimited

代码语言:javascript
复制
##bcftools_normVersion=1.3.1+htslib-1.3.1
##bcftools_normCommand=norm -m-both -o genome_split.vcf genome.vcf.gz
##bcftools_normCommand=norm -f /home/cmccabe/Desktop/NGS/picard-tools-1.140/resources/ucsc.hg19.fasta -o genome_annovar.vcf genome_split.vcf
#CHROM  POS ID  REF ALT QUAL    FILTER  INFO    FORMAT
chr1    948797  .   C   .   0   PASS    DP=159;END=948845;MAX_DP=224;MIN_DP=95  GT:DP:MIN_DP:MAX_DP 0/0:159:95:224   --- duplicated line ---
chr1    948797  .   C   .   0   PASS    DP=159;END=948845;MAX_DP=224;MIN_DP=95  GT:DP:MIN_DP:MAX_DP 0/0:159:95:224  .   .   .   .   .   159 homref  .    --- this line is correct ---

期望输出 tab-delimited

代码语言:javascript
复制
##bcftools_normVersion=1.3.1+htslib-1.3.1
##bcftools_normCommand=norm -m-both -o genome_split.vcf genome.vcf.gz
##bcftools_normCommand=norm -f /home/cmccabe/Desktop/NGS/picard-tools-1.140/resources/ucsc.hg19.fasta -o genome_annovar.vcf genome_split.vcf
#CHROM  POS ID  REF ALT QUAL    FILTER  INFO    FORMAT
chr1    948797  .   C   .   0   PASS    DP=159;END=948845;MAX_DP=224;MIN_DP=95  GT:DP:MIN_DP:MAX_DP 0/0:159:95:224  .   .   .   .   .   159 homref  .
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-11-30 14:09:25

你的第一份声明:

代码语言:javascript
复制
/^#/

上面写着“打印以#开头的每一行”,最后一行是:

代码语言:javascript
复制
1

上面写着“打印每一行”。因此,输出中出现了重复行。

如果只修改不以#开头但打印所有行的行,则如下所示:

代码语言:javascript
复制
!/^#/ { do stuff }
1
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47575194

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档