2015-11-17 77 views
0

我的數據文件中有4列,第1列是chr編號,第2列是起始站點,第3列是結束站點。第4列是strand +或 - 。現在,如果第4列是負鏈,我想將第3列換成第2列,但對於+鏈我不想改變。在Linux中使用條件交換列

Chr1 94847 3737474 + 
Chr1 27374 3948475 + 
Chr1 93947 9283736 - 

所以前兩排都不錯,但對於第三排,我想用第3列第4列交換第2列,作爲鏈 - 。

我想這個代碼,但該系統產生的誤差&操作...

cat hg-19_promoter_knownGene.filtered.bed | awk 'BEGIN {OFS="\t"} { if ($4 == "+") {print $1,$2,$3} & if ($4 == "-") { print $1,$3,$2 }}' > hg-19_promoter_knownGene.filter3.bed 

回答

1

要下手,chnage的 「&」 到 「;」。

這應該工作:

awk 'BEGIN {OFS="\t"} { if ($4 == "+") {print $1,$2,$3} ; if ($4 == "-") { print $1,$3,$2 }}'