任何人都可以帮助我解决以下问题:
我有一个制表符分隔的文件,在每一行中没有相同数量的列。我需要将第一列中的值随后除以所有其他列中的值。因此,我希望将最终号码提供给一个新文件。如何将所有其他列的列随后分割或除以所有其他列的倍数?
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
预期输出:
output.txt的
0.083 0.14 26666.66
我知道我可以:
- 或者除以第二列的第一列,则取该值,然后除以第三列等
- 或者将第二列的所有列乘以最后一列,然后使用此值除以第一列
对于第一种可能性,我尝试使用:
awk '{$1=$1/$2; $2=""; print $0 }' example_file_filled.txt
这除以第二个和打印作为输出的结果,接着为尚未用于划分这些数字中的第一行。我试图循环完成,直到没有第二行,但我没有管理。
任何人都可以提出解决方案吗?我的真实文件有> 100列。我主要使用bash/unix,但我也乐于从其他方法中学习。
在此先感谢!
非常感谢!它完美的作品。我没有任何专栏中的0,所以没关系。 –