我想解析的文件如下
#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