我试图让我的第二列为非负值,因为有些值为正值且有些为负值,因此尝试使用AWK函数。
我的床文件中有六列我正在使用以下命令
awk -F"\t" '{print $1"\t"$2<0?$2*-1:$2"\t"$3"\t"$4"\t"$5"\t"$6}' CTCF_first_coordinates > CTCF_first_coordinates_new
我的问题是当我运行它时,我的第一列没有打印,并且值没有转换为非负值。但是,如果我不打印我的第一列代码就可以了。
有人可以建议我如何改进我的代码以获得正确的输出?
下面是制表符分隔的输入床文件,第二列包含负值和正值
chr18 576980 586980 CETN1 CLUL1 M1
chr18 -8280 1720 NA USP14 M1
并且我需要的输出低于我希望负值为正的位置,并且所有内容都保持不变
chr18 576980 586980 CETN1 CLUL1 M1
chr18 8280 1720 NA USP14 M1
除了上述问题,我还有一些问题,其中第一个坐标上方显示的输出文件大于第二个坐标。是否有任何方法可以交换文件中两列的选定值,即第2列和第3列。我在整个文件中有192个这样的实例。所以我的输出应该是
chr18 576980 586980 CETN1 CLUL1 M1 chr18 1720 8280 NA USP14 M1
答案 0 :(得分:0)
如果标志是否定的,只需更改标志:
$ awk '$2<0 {$2=-$2}1' file
chr18 576980 586980 CETN1 CLUL1 M1
chr18 8280 1720 NA USP14 M1
命令末尾的1
是一种在True
中将某些内容设置为awk
的方法,以便它执行默认行为:打印当前行。