我有一张这样的桌子:

ERR843978.746 15 54 71
ERR843978.1705 7 45 51
ERR843978.5030 3 46 58
ERR843978.8855 15 48 52
ERR843978.4162 16 48 64
ERR843978.421 14 51 54
ERR843978.4599 12 60 46
ERR843978.5941 18 67 55
ERR843978.3780 15 56 70

我想把所有列除以相同的数字,例如,如果我除以3,就会得到这种输出,例如:
ERR843978.746 3 18 23.666
ERR843978.1705 2.333 15 17
ERR843978.5030 1 15.333 19.333
ERR843978.8855 5 19.333 17.333
...

这听起来不太难,但我在bash中找不到这样做的方法(我想你也可以用Python轻松做到这一点)。
我需要一个不太慢的解决方案,因为实际上我的桌子很大。

最佳答案

在awk中:

$ awk '{for(i=2;i<=NF;i++)$i/=3}1' file
ERR843978.746 5 18 23.6667
ERR843978.1705 2.33333 15 17
ERR843978.5030 1 15.3333 19.3333
ERR843978.8855 5 16 17.3333
ERR843978.4162 5.33333 16 21.3333
ERR843978.421 4.66667 17 18
ERR843978.4599 4 20 15.3333

通过管道连接到column以获得良好的输出:
$ awk ... | column -t
ERR843978.746   5        18       23.6667
ERR843978.1705  2.33333  15       17
ERR843978.5030  1        15.3333  19.3333

关于bash - 如何用bash中的常量除以列,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49538596/

10-13 07:34