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)的主要内容,如果未能解决你的问题,请参考以下文章

awk查找指定行指定列的数据 并输出到文件

利用awk命令提取其中一列包括特定字符的所有行怎么办

awk查找指定行指定列的数据 并输出到文件

awk

Linux文本处理神器awk实战案例

Shell编程字符截取命令awksed命令