在 bash 中重新格式化文件

在 bash 中重新格式化文件

我想解析的文件如下

#header
#header2
#header 3
# header


 1       565286  SNP1-555149     C       T       .       PASS    AC=4270AF=1.00;AN=4270;set=broad       GT      1/1   /1     1/1     1/1     1/1     1/1


1       534247  SNP1-524110     C       T       .       PASS    AC=36;AF=7.772e-03;AN=4632;set=Intersection     GT      0/0     0/0     0/0     

有一个标题 - 应跳过。之后我只需要前 3 个字段(它们以制表符分隔,如

1 565286 SNP1-555149

字段中有几行,但只显示标题后的前两行......

答案1

告诉 awk 不要匹配以 开头的任何行#以及直到行尾的其他行;不要匹配空行;对于没有这些模式的行,打印字段 1,2 和 3 。

$> cat inputData.txt                                                           
    #header
    #header2
  #  header 3
   # header


 1       565286  SNP1-555149     C       T       .       PASS    AC=4270AF=1.00;AN=4270;set=broad       GT      1/1   /1     1/1     1/1     1/1     1/1


1       534247  SNP1-524110     C       T       .       PASS    AC=36;AF=7.772e-03;AN=4632;set=Intersection     GT      0/0     0/0     0/0     
$> awk '!/^#.+$/ && !/^$/ { print $1,$2,$3  } ' inputData.txt                  
1 565286 SNP1-555149
1 534247 SNP1-524110

相关内容