2017-04-24 75 views
1

我有这个文件:为什么awk代码不能完成我想要的操作?

$ head -n 4 badRegionFromHWE.merged 
seqnames start end width strand 
chr1 144118070 145868461 1750392 * 
chr7 100049516 101110026 1060511 * 
chr7 141508887 142999071 1490185 * 
$ 

我想没有打印出由制表符分隔的标题行和打印列1,2,3。所以我写了这个:

awk 'OFS="\t";NR>1{print$1,$2,$3}' badRegionFromHWE.merged | head 
seqnames start end width strand 
chr1 144118070 145868461 1750392 * 
chr1 144118070 145868461 
chr7 100049516 101110026 1060511 * 
chr7 100049516 101110026 
chr7 141508887 142999071 1490185 * 
chr7 141508887 142999071 

它没有做我想做的事情!

回答

2

赋值OFS="\t"在每一行上的计算结果为真(非零,非空),因此它会打印每一行。您应该将表达式附在BEGIN块中:

awk 'BEGIN { OFS="\t" } NR > 1 { print$1, $2, $3 }' badRegionFromHWE.merged 
+0

非常感谢! –

相关问题