Esta é uma pergunta auto-respondida. Eu já escrevi uma resposta, mas, se você tiver uma melhor, por favor, poste.
Estou desenvolvendo um programa e ele está imprimindo alguns resultados de tempo:
$ 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
É muito difícil dar uma olhada na lista e obter um tempo médio.
Como posso obter rapidamente o tempo médio?
Use o awk:
Ou cole os resultados no awk.
Porém, como você já está executando um script Python, seria melhor apenas adicionar código ao script Python para calcular uma média móvel e imprimi-la com cada valor.
1. Copie a coluna de números usando retângulo
Mantenha pressionada a Ctrltecla e o botão esquerdo do mouse e arraste o mouse para destacar a coluna de números:
OBSERVAÇÃO: Assim que você destacar o retângulo, ele será copiado para a área de transferência.
2. Execute o programa
n
Em seguida digite
n
+ Enter.Use o botão do meio do mouse para colar da área de transferência. Em seguida, pressione Enterpara contabilizar os resultados.
3. Instale
n
no seu sistemaO
n
programa é um script python simples:Copie o script python acima para um arquivo chamado
n
. On
arquivo deve estar no seu caminho. Se não estiver no seu caminho, você deve chamá-lo com o prefixo do diretório. Por exemplo, você teria que digitar/home/me/stuff/n
em vez de apenasn
.Você precisa sinalizar o
n
programa como executável. Por exemplochmod a+x /home/me/stuff/n
.4. Resumo
n
pegará números copiados não apenas dognome-terminal
Libre Calc, mas também do PyCharm e muitos outros programas que podem ser copiados para a área de transferência do sistema.Ter que somar ou calcular a média de um conjunto de números tem sido um PITA para mim por muito tempo. Então, eu preparei este pequeno script em apenas alguns minutos. Escrever este Q & A, na verdade, levou mais tempo :)
n
deve ser executado em qualquer versão do Python, de2.7.12
a3.14
ou, em outras palavras, do Ubuntu 16.04 até o Ubuntu 24.10.Outras Respostas
Há outras ótimas respostas especificamente adaptadas à pergunta, mas não são robustas. Por exemplo, outro programa exibe a saída da velocidade do WiFi do Linux para o telefone Android 13:
O
n
programa python ainda funciona sem nenhum ajuste nasawk
posições de impressão. Além disso, para mim, pelo menos,awk
é francamente estranho lembrar da sintaxe e dos argumentos. Fazer um script e revisá-lo constantemente com base na posição da coluna não acelera o fluxo de trabalho.Uma variação da resposta de WinEunuuchs2Unix ;
Outra maneira seria:
~/bin/crunch_numbers.sh
;~/bin/crunch_numbers.sh
:Dessa forma, o fluxo de trabalho consistiria apenas em:
A saída pode ser copiada e colada selecionando-a/clicando com o botão direito/clicando em "Copiar", se necessário.
Uma vantagem desse método é que ele não requer um terminal, o que é útil ao copiar coisas de outro lugar (por exemplo, Calc).
Uma desvantagem desse método é que tenho quase certeza de que o script do WinEunuuchs2Unix é mais preciso do que o meu script. Se a precisão do ponto flutuante for uma preocupação, provavelmente se deve combinar esse método com o script deles.
Uma alternativa é
cut
selecionar a sexta coluna ejq
calcular a média.A frase abaixo permite que você execute o script, veja os resultados conforme eles chegam e calcule a média no final.
python -u
é obter a saída sem buffer ao enviá-la para o pipe, para que você ainda possa ver a saídastdout
enquanto ela chega|tee >(...)
é duplicar a saída entrestdout
e o processamento posterior no pipetrap '' INT
é executar o pipe quando você pressiona Ctrl-C(SIGINT) em vez de também matar o pipe antes que ele comececut -d" " -f 6
é dividir as linhas em colunas com espaço como delimitador e mostrando apenas a 6ª colunajq -s "add / length"
adiciona todas as linhas e divide pelo número de linhasScript Python usado para testes:
Exemplo de execução:
Claro que você também pode copiar a saída com o mouse e usar um comando mais simples para colar o conteúdo da área de transferência no pipe: