web-dev-qa-db-ja.com

2つのLinuxコマンドの結果を連結する方法

2つのLinuxコマンドの結果を1行に(つまり、変数を使用せずに)連結する簡単な方法はありますか?

私は近くの気象台から地元の屋外温度を引き出します。今日の結果は次のとおりです。

5.2

ユニットを追加したいだけなので、結果は次のようになります。

5.2°C

私が欲しいものをほとんど私に与えるコマンドの例は次のとおりです:

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

または裏返しにします:

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

wget...|grep...からの結果がコマンド置換として収集され、printf%sに挿入されるようにします。

9
Jeff Schaller

たとえば、echoは、指定したすべての引数を出力するだけです。コマンド置換を使用して、コマンドの出力を文字列に変換できます。

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

wgetの出力の最後にあるキャリッジリターンを削除します。

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

シングルsed

スティーブン・キットが示唆したように、これは質問に対する正確な答えではありません...

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

\1は、括弧内で一致するものへの逆参照です。

-n/pの組み合わせが何をするかについての説明は this answer を参照してください。

2
Ph3n0x