Hi,
Perhaps a rather simple problem...?
I have data that looks like this.
BPC0013 ANNUL_49610 0 0 1 1
BPC0014 ANNUL_49642 0 0 2 1
BPC0015 ANNUL_49580 0 0 1 1
BPC0016 ANNUL_49596 0 0 2 1
BPC0017 VULGO_49612 0 0 1 1
BPC0018 ANNUL_49628 0 0 1 1
BPC0019 ANNUL_49692 0 0 2 1
170291_HMG ANNUL_170291 0 0 1 1
170351_HMG ANNUL_170351 0 0 1 1
170475_HMG 170475 0 0 2 1
170497_HMG ANNUL_170497 0 0 2 1
170534_HMG ANNUL_170534 0 0 1 1
170559_HMG ANNUL_170559 0 0 1 1
I want to change the col6 value to 2 only if the line does not start with BPC.
awk -F "\t" '{if($1==BPC) {print $1,$2,$3,$4,$5,$6} else{print $1, $2, $3, $4, $5, $6="2"}} ' testfam.fam > atestedfam.fam
I tried this, but it is changing everything to 2 at col6.
And the lines that do start with BPC have $6 equal to 2 already.
So isn't this an expected outcome ?
Anyway -
$
$ cat f2
BPC0013 ANNUL_49610 0 0 1 2
BPC0014 ANNUL_49642 0 0 2 2
BPC0015 ANNUL_49580 0 0 1 2
BPC0016 ANNUL_49596 0 0 2 2
BPC0017 VULGO_49612 0 0 1 2
BPC0018 ANNUL_49628 0 0 1 2
BPC0019 ANNUL_49692 0 0 2 2
170291_HMG ANNUL_170291 0 0 1 1
170351_HMG ANNUL_170351 0 0 1 1
170475_HMG 170475 0 0 2 1
170497_HMG ANNUL_170497 0 0 2 1
170534_HMG ANNUL_170534 0 0 1 1
170559_HMG ANNUL_170559 0 0 1 1
$
$ awk '{if (!/^BPC/){print $1,$2,$3,$4,$5,"2"} else {print}}' f2
BPC0013 ANNUL_49610 0 0 1 2
BPC0014 ANNUL_49642 0 0 2 2
BPC0015 ANNUL_49580 0 0 1 2
BPC0016 ANNUL_49596 0 0 2 2
BPC0017 VULGO_49612 0 0 1 2
BPC0018 ANNUL_49628 0 0 1 2
BPC0019 ANNUL_49692 0 0 2 2
170291_HMG ANNUL_170291 0 0 1 2
170351_HMG ANNUL_170351 0 0 1 2
170475_HMG 170475 0 0 2 2
170497_HMG ANNUL_170497 0 0 2 2
170534_HMG ANNUL_170534 0 0 1 2
170559_HMG ANNUL_170559 0 0 1 2
$
$
tyler_durden
Hi durden_tyler
Sorry I pasted from the file that already changed
Will change the original post now.
nawk ' /^BPC/{$6 = 2}1' testfam.fam
Thank you durden_tyler & steadyonabix