awk - 在 awk 中操作文本文件中的列
问题描述
我有一个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
解决方案
您需要两次通过,一次计算总和,然后缩放字段
像这样的东西
$ awk -v OFS='\t' 'NR==FNR {sum+=$4; next}
{$4*=(1000000/sum)}1' file{,} > newfile
推荐阅读
- elasticsearch - DSL查询从字典数组中查找元素
- javascript - 单击btn jquery时删除表tr
- sql - 选择符合条件 SQL 的所有非不同用户的列表
- angular - 带导航的 Angular FullCalendar 自定义标题按钮
- google-visualization - 在谷歌图表中结合风格、间隔和确定性
- php - 使用 PHP 获取 og:image url
- html - 阴影背景大小的问题
- database - 为什么我在 XAMP 上托管的网站在本地主机上没有数据库错误?
- blazor - 在 blazor 页面上设置参数时 IIS 和独立应用程序崩溃
- spring - 尝试将 Spring 版本从 5.1 升级到 5.2 时出错