Como concatenar o resultado de dois comandos do Linux

2

Existe uma maneira fácil de concatenar o resultado de dois comandos do Linux, em uma linha (ou seja, sem usar variáveis)?

Eu puxo a temperatura externa local de uma estação meteorológica próxima. O resultado hoje é:

5.2

Eu simplesmente quero adicionar as unidades, então o resultado deve ficar assim:

5.2°C

Um exemplo de comando, que quase me dá o que eu quero é:

wget -q -O- "http://meteocentre.com/montreal/home_e.html" | grep -oP '(?<=Tn= ).*(?=&deg)' ; printf "°C\n"
    
por Mtl Dev 16.10.2018 / 18:31

4 respostas

9

Ou faça isso de dentro para fora:

printf "%s°C\n" "$(wget -q -O- "http://meteocentre.com/montreal/home_e.html" | grep -oP '(?<=Tn= ).*(?=&deg)')"

Para que os resultados de wget...|grep... sejam coletados como uma substituição de comando e inseridos no %s no printf .

    
por 16.10.2018 / 18:36
8

echo , por exemplo, imprime todos os argumentos que você fornece. Você pode usar a substituição de comando para transformar a saída de um comando em uma string.

echo $(wget -q -O- "http://meteocentre.com/montreal/home_e.html" | grep -oP '(?<=Tn= ).*(?=&deg)') °C
    
por 16.10.2018 / 18:33
5

Exclua o retorno de carro no final da saída de wget :

wget -q -O- "http://meteocentre.com/montreal/home_e.html" | grep -oP '(?<=Tn= ).*(?=&deg)' | tr -d '\n' ; printf "°C\n"
    
por 16.10.2018 / 18:33
2

Único sed

Como sugerido por Stephen Kitt, embora essa não seja uma resposta exata para a pergunta ...

$ wget -q -O- "http://meteocentre.com/montreal/home_e.html" | sed -n 's/.*Tn= \(.*\)&deg.*/°C/p'
3.8°C

é um backref para o que é correspondido dentro dos parênteses

Veja esta resposta para obter explicações sobre o que a combinação de -n e /p faz.

    
por 17.10.2018 / 11:23

Tags