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

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

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

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

5.2

我只想添加单位,因此结果应如下所示:

5.2°C

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

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

答案1

或者由内向外进行:

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

以便将结果wget...|grep...收集为命令替换并插入到%sprintf

答案2

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

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

答案3

删除输出末尾的回车符wget

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

答案4

单身的sed

正如斯蒂芬·基特(Stephen Kitt)所建议的,尽管这不是问题的确切答案......

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

\1是括号内匹配内容的反向引用

这个答案解释-n和 的组合的作用/p

相关内容