我的数据文件中有4列,第1列是chr编号,第2列是起始站点,第3列是结束站点。第4列是strand +或 - 。现在,如果第4列是负链,我想将第3列与第2列交换,但对于+链,我想要不做任何更改。
Chr1 94847 3737474 +
Chr1 27374 3948475 +
Chr1 93947 9283736 -
所以前两行是好的,但是对于第三行,我想要将第2列与第3列交换,就像第4列中的链一样 - 。
我尝试了这段代码但是系统会生成一个错误&操作数...
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
答案 0 :(得分:1)
首先,选择“&”到“;”。
这应该有效:
awk 'BEGIN {OFS="\t"} { if ($4 == "+") {print $1,$2,$3} ; if ($4 == "-") { print $1,$3,$2 }}'