linux提取指定列字符并打印所有内容(awk)
Posted 橙子牛奶糖
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux提取指定列字符并打印所有内容(awk)相关的知识,希望对你有一定的参考价值。
假设有文件长如下样子:
CHROM POS ID REF ALT QUAL FILTER INFO FORMAT samplename
1 3552841 . G . 32.995 . DP=1;MQ0F=0;AF1=0;AC1=0;DP4=1,0,0,0;MQ=40;FQ=-29.9912 GT:PL:DP 0/0:0:1
1 3552842 . T . 32.995 . DP=1;MQ0F=0;AF1=0;AC1=0;DP4=1,0,0,0;MQ=40;FQ=-29.9912 GT:PL:DP 0/0:0:1
2 3552843 . G . 32.995 . DP=1;MQ0F=0;AF1=0;AC1=0;DP4=1,0,0,0;MQ=40;FQ=-29.9912 GT:PL:DP 0/0:0:1
2 3552844 . T . 32.995 . DP=1;MQ0F=0;AF1=0;AC1=0;DP4=1,0,0,0;MQ=40;FQ=-29.9912 GT:PL:DP 0/0:0:1
3 3552845 . G . 32.995 . DP=1;MQ0F=0;AF1=0;AC1=0;DP4=1,0,0,0;MQ=40;FQ=-29.9912 GT:PL:DP 0/0:0:1
3 3552846 . C . 32.995 . DP=1;MQ0F=0;AF1=0;AC1=0;DP4=1,0,0,0;MQ=40;FQ=-29.9912 GT:PL:DP 0/0:0:1
4 3552847 . A . 32.995 . DP=1;MQ0F=0;AF1=0;AC1=0;DP4=1,0,0,0;MQ=40;FQ=-29.9912 GT:PL:DP 0/0:0:1
5 3552848 . C . 32.995 . DP=1;MQ0F=0;AF1=0;AC1=0;DP4=1,0,0,0;MQ=40;FQ=-29.9912 GT:PL:DP 0/0:0:1
6 3552849 . A . 32.995 . DP=1;MQ0F=0;AF1=0;AC1=0;DP4=1,0,0,0;MQ=40;FQ=-29.9912 GT:PL:DP 0/0:0:1
7 3552850 . C . 32.995 . DP=1;MQ0F=0;AF1=0;AC1=0;DP4=1,0,0,0;MQ=40;FQ=-29.9912 GT:PL:DP 0/0:0:1
现提取第一列字符为“3”,并打印出符合第一列为“3”的所有列,同时保存,则可以用以下命令:
awk -F " " ‘{if($1~/^3/) print $1,$2,$3,$4,$5,$6,$7,$8,$9,$10}‘ sample.vcf > samplecol.vcf #{if($1~/^3/) print $1,$2,$3,$4,$5,$6,$7,$8,$9,$10}‘ 的意思是,在文件sample.vcf中,如果第一列($1)里面有匹配(~)正则表达式(/^3/)的话,那么就输出(print)到标准输出。保存到samplecol.vcf文件中。
输出的文件如下:
3 3552845 . G . 32.995 . DP=1;MQ0F=0;AF1=0;AC1=0;DP4=1,0,0,0;MQ=40;FQ=-29.9912 GT:PL:DP 0/0:0:1
3 3552846 . C . 32.995 . DP=1;MQ0F=0;AF1=0;AC1=0;DP4=1,0,0,0;MQ=40;FQ=-29.9912 GT:PL:DP 0/0:0:1
以上是关于linux提取指定列字符并打印所有内容(awk)的主要内容,如果未能解决你的问题,请参考以下文章