所以到目前为止我得到的是一个Bed-Table文件,这个文件的问题是,在某些行中,值在第2列中的值大于第3列中的值。AWK:需要交换两列之间的值,如果左边的一个比右边的小
awk中是否有任何一个班轮,它们将交换这两个值,以便表格总是在列2中获得较小的值,在列3中获得较大的值?
chr01 100 200
chr02 300 150
所以在这个例子中,所需的输出将是:
chr01 100 200
chr02 150 300
所以到目前为止我得到的是一个Bed-Table文件,这个文件的问题是,在某些行中,值在第2列中的值大于第3列中的值。AWK:需要交换两列之间的值,如果左边的一个比右边的小
awk中是否有任何一个班轮,它们将交换这两个值,以便表格总是在列2中获得较小的值,在列3中获得较大的值?
chr01 100 200
chr02 300 150
所以在这个例子中,所需的输出将是:
chr01 100 200
chr02 150 300
只是交换列,如果他们是在错误的订单,使用临时变量:
$ awk '$2 > $3 { temp = $3; $3 = $2; $2 = temp } 1' OFS='\t' file
1
最后是{print}
的通用速记,所以每行都打印出来。将输出字段分隔符OFS
设置为制表符保留了格式。
或者:
$ awk -F'\t' '$2 > $3 { $0 = $1 FS $3 FS $2 } 1' file
如果必要重新排列行的内容,使用输入字段分隔符FS
它已被设置为制表符。
你可以用awk,
awk '$2>$3{x=$3;$3=$2;$2=x}1' file
该命令会切换所需的值,但它会导致错误,因为它会以某种方式删除列之间的选项卡 – JadenBlaine
'awk'$ 2> $ 3 {x = $ 3; $ 3 = $ 2; $ 2 = x} 1' sed的/ \ +/\ t/g'' –
awk '{ printf("%s %d %d\n",$1,($2 < $3) ? $2 : $3,($2 < $3) ? $3 : $2) }' file
这是一张床单文件吗?即使谷歌似乎并不现在。 –
床文件是一张表格,其中包含基因组内DNA序列的坐标。您可以使用它从基因组中提取序列,或者进行分析,如是否有基因,这些基因彼此接近或序列相互重叠。 – JadenBlaine