这是一个自答题。我已经写了一个答案,但如果你有更好的答案,请发布。
我正在开发一个程序并打印一些时间结果:
$ homa.py
Creating instance rd = NetworkInfo(): 0.0071680546
Creating instance rd = NetworkInfo(): 0.0083100796
Creating instance rd = NetworkInfo(): 0.0121581554
Creating instance rd = NetworkInfo(): 0.0205171108
Creating instance rd = NetworkInfo(): 0.0067570210
Creating instance rd = NetworkInfo(): 0.0215399265
Creating instance rd = NetworkInfo(): 0.0170729160
Creating instance rd = NetworkInfo(): 0.0088560581
Creating instance rd = NetworkInfo(): 0.0079369545
Creating instance rd = NetworkInfo(): 0.0091099739
Creating instance rd = NetworkInfo(): 0.0085971355
Creating instance rd = NetworkInfo(): 0.0137989521
Creating instance rd = NetworkInfo(): 0.0081419945
Creating instance rd = NetworkInfo(): 0.0090279579
Creating instance rd = NetworkInfo(): 0.0070800781
Creating instance rd = NetworkInfo(): 0.0079300404
^C
homa.py refresh() closed by SIGTERM
看一眼列表并得到平均时间太困难了。
如何才能快速得到平均时间?
使用 awk:
或者将结果粘贴到 awk 中。
但是,由于您已经在运行 Python 脚本,所以最好只是向 Python 脚本中添加代码来计算运行平均值并打印每个值。
1. 使用矩形复制数字列
按住Ctrl键和鼠标左键并拖动鼠标以突出显示数字列:
注意:一旦您突出显示矩形,它就会被复制到剪贴板。
2. 运行程序
n
然后输入
n
+ Enter。使用鼠标中键从剪贴板粘贴。然后按下Enter来统计结果。
3.
n
在您的系统上安装该
n
程序是一个简单的 Python 脚本:将上述 Python 脚本复制到名为 的文件中
n
。该n
文件应位于您的路径中。如果不在您的路径中,则必须使用目录前缀来调用它。例如,您必须键入/home/me/stuff/n
而不是n
。您需要将
n
程序标记为可执行。例如chmod a+x /home/me/stuff/n
。4. 总结
n
不仅可以从gnome-terminal
Libre Calc、pyCharm 和许多其他可以复制到系统剪贴板的程序中复制数字,还可以从这些程序中复制数字。长期以来,对一组数字进行加法或计算平均值对我来说一直是一件很麻烦的事。所以我只花了几分钟就写出了这个小脚本。写这个问答实际上花了更长的时间 :)
n
2.7.12
应该可以在从到Ubuntu 16.04 的任何 Python 版本上运行3.14
,换句话说,从 Ubuntu 16.04 到 Ubuntu 24.10。其他答案
还有其他专门针对该问题而定制的优秀答案,但不够完善。例如,另一个程序显示从 Linux 到 Android 13 手机的 WiFi 速度输出:
python程序
n
在不调整awk
打印位置的情况下仍能正常工作。此外,坦率地说,对于我自己来说,记住语法和参数awk
是一件很困难的事情。编写脚本并根据列位置不断修改它并不能加快工作流程。WinEunuuchs2Unix 答案的变体;
另一种方法是:
~/bin/crunch_numbers.sh
~/bin/crunch_numbers.sh
:这样,工作流程就仅包括:
如果需要,可以通过选择/右键单击/单击“复制”来复制粘贴输出。
这种方法的优点是它不需要终端,这在从其他地方复制东西(例如 Calc)时很有用。
这种方法的一个缺点是,我确信WinEunuuchs2Unix 的脚本比我的脚本更准确。如果担心浮点精度,则应该将此方法与他们的脚本结合使用。
另一种方法是
cut
选择第六列并jq
计算平均值。下面的一行程序允许您运行脚本,查看结果,并在最后计算平均值。
python -u
是在将输出发送到管道时不进行缓冲,这样您仍然可以看到stdout
输入时的输出|tee >(...)
stdout
是复制管道之间的输出和进一步的处理trap '' INT
是当你按下(SIGINT)时运行管道,Ctrl-C而不是在管道启动之前就将其终止cut -d" " -f 6
是将行分成以空格为分隔符的列,并仅显示第 6 列jq -s "add / length"
将所有行数相加,然后除以行数用于测试的Python脚本:
示例运行:
当然您也可以用鼠标复制输出并使用更简单的命令将剪贴板内容粘贴到管道中: