为什么awk代码不能完成我想要的操作?
问题描述:
我有这个文件:为什么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
它没有做我想做的事情!
答
赋值OFS="\t"
在每一行上的计算结果为真(非零,非空),因此它会打印每一行。您应该将表达式附在BEGIN块中:
awk 'BEGIN { OFS="\t" } NR > 1 { print$1, $2, $3 }' badRegionFromHWE.merged
非常感谢! –