首页 > 解决方案 > 用冒号分隔时使用 awk 来划分列

问题描述

我有一个包含多个列的文件,如下所示:

12080:1016 108:9 84:23 2708:270 146:18 610:127 24:6 94:6 478:59 2816:279 108:29 16332:1534

基本上,对于每一列,我想将第二个数字除以第一个数字(即 1016/12080 等)。

我想打印每列的分割值,我知道我可以通过用':'单独分割所有行然后分割来做到这一点,但这似乎需要做很多额外的工作。必须有一种更简单的方法来做到这一点,但我被困住了。

任何建议都会很棒。谢谢

标签: awksplitdivision

解决方案


尝试:

awk '{for(i=1;i<=NF;i++) { v = $i;split($i,d,":"); printf d[2]/d[1] " ";   }} ' input.txt > out.txt

输入.txt

12080:1016      108:9   84:23   2708:270        146:18  610:127 24:6    94:6    478:59  2816:279        108:29  16332:1534

出.txt

0.084106 0.0833333 0.27381 0.0997046 0.123288 0.208197 0.25 0.0638298 0.123431 0.0990767 0.268519 0.093926

推荐阅读