使用 linux 中的条件交换列
Swap column with condition in linux
我的数据文件中有 4 列,第 1 列是字符编号,第二列是起始位点,第三列是结尾 site.The第四列是链 + 或 -。现在,如果第 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 ( == "+") {print ,,} & if ( == "-") { print ,, }}' > hg-19_promoter_knownGene.filter3.bed
首先,将“&”更改为“;”。
这应该有效:
awk 'BEGIN {OFS="\t"} { if ( == "+") {print ,,} ; if ( == "-") { print ,, }}'
我的数据文件中有 4 列,第 1 列是字符编号,第二列是起始位点,第三列是结尾 site.The第四列是链 + 或 -。现在,如果第 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 ( == "+") {print ,,} & if ( == "-") { print ,, }}' > hg-19_promoter_knownGene.filter3.bed
首先,将“&”更改为“;”。
这应该有效:
awk 'BEGIN {OFS="\t"} { if ( == "+") {print ,,} ; if ( == "-") { print ,, }}'