【发布时间】:2016-11-23 11:03:47
【问题描述】:
谁能帮我解决以下问题:
我有一个制表符分隔的文件,每行的列数不同。我需要随后将第一列中的值除以所有其他列中的值。因此,我想将最终编号添加到新文件中。
example_file.txt
0.0002 0.2 0.2 0.6 0.03 0.3 0.7 0.004 0.1 0.2 0.005 0.3 0.005
我用 1 填充所有空行,以避免除以 0 的问题:
awk '{for(i=NF+1;i<=6;i++)$i="1"}1' < example_file.txt > example_file_filled.txt
example_file_filled.txt
0.002 0.2 0.2 0.6 1 1 0.03 0.3 0.7 1 1 1 0.004 0.1 0.2 0.005 0.3 0.005
预期输出:
输出.txt
0.083 0.14 26666.66
我知道我可以:
- 将第一列除以第二列,然后取此值并除以第三列等。
- 或者将第二列到最后一列的所有列相乘,然后使用该值除以第一列
对于我尝试使用的第一种可能性:
awk '{$1=$1/$2; $2=""; print $0 }' example_file_filled.txt
这将第一行除以第二行,并将结果打印为输出,后面是尚未用于除法的数字。我试图循环它以完成它,直到没有第二行,但我没有成功。
有人可以提出解决方案吗?我的真实文件有 >100 列。我主要使用 bash / unix,但我也很乐意向其他方法学习。
提前致谢!
【问题讨论】: