我有一个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
列。实际上,我想用divide
中所有元素的4th
sum
列中的每个元素4th column
然后乘以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
答案 0 :(得分:1)
您需要两次通过,一次计算总和,然后缩放字段
类似的东西
$ awk -v OFS='\t' 'NR==FNR {sum+=$4; next}
{$4*=(1000000/sum)}1' file{,} > newfile