grep para formatar dois números com ','

0
sensors|grep -oP "Core 1:\s*\+\K[0-9]+" >> lmsenreading1.txt

Então:

sensors|grep -oP "Core 0:\s*\+\K[0-9]+" >> lmsenreading0.txt

Em seguida, junte os dois arquivos .txt com um delimitador , . Isso deve dar, por exemplo, 65,66

Se eu usar

sensors|grep -oP ":\s*\+\K[0-9]+"

minha saída é

27

65

66

O 27 não é obrigatório.

Como formato a saída de sensors|grep -oP ":\s*\+\K[0-9]+" para dar:

65,66
    
por vigilance wx 12.04.2018 / 14:08

2 respostas

0

Você pode buscar "Core". que corresponde ao Core 0 e Core 1 (no meu sistema 0 e 2):

sensors | grep -oP "Core .:\s*\+\K[0-9]+" | tr "\n" "," 
46,42,

e use tr (anslate) para alterar as novas linhas para vírgulas.

Isso serve para você com uma vírgula adicional no final.

Você se livra dele com substringing de start (0) para um antes do final (-1):

sens=$(sensors | grep -oP "Core .:\s*\+\K[0-9]+" | tr "\n" ",")
echo ${sens: 0: -1}
47,44
    
por 12.04.2018 / 14:37
0

Não há necessidade de arquivos ou variáveis, apenas use printf e substituição de comandos :

printf '%s,%s\n' $(sensors | grep -oP 'Core [01]:\s*\+\K[0-9]+')

Saída no meu sistema:

53,54

Observe a mudança para o grep regex : em vez de caracteres individuais de 0 e 1 para especificar números centrais, uma classe de caractere [01] verifica os dois núcleos.

    
por 12.04.2018 / 21:58

Tags