我有一张这样的桌子:
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/