使用AWK获得非负值

使用AWK获得非负值,awk,Awk,我试图使我的第二列成为非负的,因为有些值是正的,有些值是负的,所以尝试AWK函数 我的bed文件中有六列,我使用以下命令 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

我试图使我的第二列成为非负的,因为有些值是正的,有些值是负的,所以尝试AWK函数

我的bed文件中有六列,我使用以下命令

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
除了上面的问题,我还有一些问题,上面显示的输出文件第一个坐标比第二个坐标大。是否有任何方法可以交换文件中两列(即第2列和第3列)的选定值。我在整个文件中有192个这样的实例。所以我的输出应该是

chr18 576980 586980 CETN1 CLUL1 M1
chr18 1720 8280 NA USP14 M1

如果是负号,只需更改符号即可:

$ awk '$2<0 {$2=-$2}1' file
chr18 576980 586980 CETN1 CLUL1 M1 
chr18 8280 1720 NA USP14 M1

$awk'$2请显示一些输入文件和所需输出下面的示例是输入文件chr17 78614606 78624606 B3GNTL1 METRNL M1 chr17 78364327 78374327 FN3K ZNF750 M1 chr17 78618175 78628175 B3GNTL1 METRNL M1 chr18 576980 586980 CETN1 CLUL1 M1 chr18-82801720北美USP14 m1请提供此类信息以回答您的问题。在注释中跟踪文件和代码是很困难的。@PrasoonAgarwal我想这只是括号的问题,因为
“{print$1”\t”($2
$ awk '$2<0 {$2=-$2}1' file
chr18 576980 586980 CETN1 CLUL1 M1 
chr18 8280 1720 NA USP14 M1