我有一个具有以下结构的文件:
输入
1 30923 2 300 G:0.503333 T:0.496667 T
1 51476 2 300 T:0.986667 C:0.0133333 C
1 51479 2 300 T:0.966667 A:0.0333333 T
我想要做的是改变第五和第六列的位置,使得一列获得与第七列相同的顺序。您可以在示例中看到。在第七列中,我们有T,C,T,在改变之后,T,C,A的第六列在输出中变为T,C,T,即在第三行,第五列的位置与第七列相比,第六列已切换。
输出
1 30923 2 300 G:0.503333 T:0.496667 T
1 51476 2 300 T:0.986667 C:0.0133333 C
1 51479 2 300 A:0.0333333 T:0.966667 T
我希望我能解释清楚,我找不到解决办法,你能不能给我一个暗示如何做到这一点?
提前谢谢。
答案 0 :(得分:2)
如果我理解正确,也许这对你有用吗?
:提交a.awk
substr($6,1,1) == $7 { print }
substr($6,1,1) != $7 { print $1, $2, $3, $4, $6, $5, $7 }
:file a.txt
1 30923 2 300 G:0.503333 T:0.496667 T
1 51476 2 300 T:0.986667 C:0.0133333 C
1 51479 2 300 T:0.966667 A:0.0333333 T
bash-3.2 $ awk -f a.awk a.txt
1 30923 2 300 G:0.503333 T:0.496667 T
1 51476 2 300 T:0.986667 C:0.0133333 C
1 51479 2 300 A:0.0333333 T:0.966667 T
答案 1 :(得分:2)
使用输出作为制表符分隔符并且所有列都对齐。
awk -F'[ :]*' '{if($7 == $9 ) print $1,$2,$3,$4,$5,$6,$7,$8,$9; else print $1,$2,$3,$4,$7,$8,$5,$6,$9}' input.txt|column -t
输出:
1 30923 2 300 G 0.503333 T 0.496667 T
1 51476 2 300 T 0.986667 C 0.0133333 C
1 51479 2 300 A 0.0333333 T 0.966667 T