如何连接两个 Linux 命令的结果

Mtl*_*Dev 2 grep bash sed awk tr

有没有一种简单的方法可以将两个 Linux 命令的结果连接在一行中(即,不使用变量)?

我从附近的气象站提取当地室外温度。今天的结果是:

5.2
Run Code Online (Sandbox Code Playgroud)

我只想添加单位,所以结果应该是这样的:

5.2°C
Run Code Online (Sandbox Code Playgroud)

一个示例命令,几乎给了我我想要的东西:

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

Jef*_*ler 9

或者由内而外:

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

使得从该结果wget...|grep...被收集作为命令替换和插入%sprintf


cho*_*oba 8

echo,例如,只打印你给它的所有参数。您可以使用命令替换将命令的输出转换为字符串。

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


Ste*_*itt 5

删除wget's 输出末尾的回车:

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