有没有一种简单的方法可以将两个 Linux 命令的结果连接在一行中(即不使用变量)?
我从附近的气象站获取当地的室外温度。今天的结果是:
5.2
我只想添加单位,因此结果应如下所示:
5.2°C
一个示例命令,几乎给了我我想要的东西是:
wget -q -O- "http://meteocentre.com/montreal/home_e.html" | grep -oP '(?<=Tn= ).*(?=°)' ; printf "°C\n"
答案1
或者由内向外进行:
printf "%s°C\n" "$(wget -q -O- "http://meteocentre.com/montreal/home_e.html" | grep -oP '(?<=Tn= ).*(?=°)')"
以便将结果wget...|grep...
收集为命令替换并插入到%s
中printf
。
答案2
echo
例如,只打印您提供的所有参数。您可以使用命令替换将命令的输出转换为字符串。
echo $(wget -q -O- "http://meteocentre.com/montreal/home_e.html" | grep -oP '(?<=Tn= ).*(?=°)') °C
答案3
删除输出末尾的回车符wget
:
wget -q -O- "http://meteocentre.com/montreal/home_e.html" | grep -oP '(?<=Tn= ).*(?=°)' | tr -d '\n' ; printf "°C\n"
答案4
单身的sed
正如斯蒂芬·基特(Stephen Kitt)所建议的,尽管这不是问题的确切答案......
$ wget -q -O- "http://meteocentre.com/montreal/home_e.html" | sed -n 's/.*Tn= \(.*\)°.*/\1°C/p'
3.8°C
\1
是括号内匹配内容的反向引用
看这个答案解释-n
和 的组合的作用/p
。