For example , you have a text file with some empty columns in lines, like:
JUNCTION.100681___1___6___1___6___JUNCTION.100681___ ___17___ ___12
(which is tab-separated, and the 7th and 9th columns are empty)
awk '{FS="\t";OFS="\t"; print $1,$2+$7,$3+$8,$4+$9,$5+$10}' will output:
JUNCTION.100681___18___18___1___6
It takes $7 as 17 and $8 as 12, which is wrong. The right output should be:
JUNCTION.100681___1___23___1___18
It seems FS="\t" does not work properly in the body of AWK.
The right solution is:
awk 'BEGIN{FS="\t"}{OFS="\t";print $1,$2+$7,$3+$8,$4+$9,$5+$10}'
or
awk -F"\t" '{OFS="\t";print $1,$2+$7,$3+$8,$4+$9,$5+$10}'
or
awk -v FS="\t" '{OFS="\t";print $1,$2+$7,$3+$8,$4+$9,$5+$10}'
I am not sure if this is a bug.
btw, I am using GNU Awk 3.1.5.
No comments:
Post a Comment