我有一个tab separated
文本文件,想对一列进行一些数学运算,并创建一个新的tab separated
文本文件。
这是我的文件的一个例子:
chr1 144520803 144520804 12 chr1 144520813 58
chr1 144520840 144520841 12 chr1 144520845 36
chr1 144520840 144520841 12 chr1 144520845 36
chr1 144520848 144520849 14 chr1 144520851 32
chr1 144520848 144520849 14 chr1 144520851 32
我想更改4th
列。事实上,我想将4th
列中的每个元素的divide
乘以4th column
中所有元素的sum
,然后乘以1000000。就像预期的输出一样。
expected output
:
chr1 144520803 144520804 187500 chr1 144520813 58
chr1 144520840 144520841 187500 chr1 144520845 36
chr1 144520840 144520841 187500 chr1 144520845 36
chr1 144520848 144520849 218750 chr1 144520851 32
chr1 144520848 144520849 218750 chr1 144520851 32
我正尝试在awk
中使用以下命令执行此操作,但它不会返回我想要的内容。你知道怎么修吗:
awk '{print $1 "t" $2 "t" $3 "t" $4/{sum+=$4}*1000000 "t" $5 "t" $6 "t" $7}' myfile.txt > new_file.txt
您需要两次通过,一次计算总和,然后缩放字段
像这个
$ awk -v OFS='t' 'NR==FNR {sum+=$4; next}
{$4*=(1000000/sum)}1' file{,} > newfile