如何连接两个 linux 命令的结果?
How to concatenate the result of two linux commands?
有没有一种简单的方法可以将两个 linux 命令的结果连接在一行中? (即不使用变量)
我从附近的气象站获取当地室外温度。今天的结果是:
5.2
我只是想添加单位,所以结果应该是这样的:
5.2°C
一个示例命令,它几乎给了我我想要的是:
wget -q -O- "http://meteocentre.com/montreal/home_e.html" | grep -oP '(?<=Tn= ).*(?=°)' ; printf "°C\n"
您已经在串联结果。
wget .. | grep ..
输出:5.2\n
printf
输出 °C\n
因此,串联的结果是 5.2\n°C\n
,正是您得到的结果。
你想要做的是去除 5.2
之后的换行符。您可以利用 $(command substitution)
去除尾随换行并将其传递给 printf
:
printf '%s°C\n' "$(wget -q -O- "http://meteocentre.com/montreal/home_e.html" | grep -oP '(?<=Tn= ).*(?=°)')"
在bash中,在末尾添加竖线:
echo $(cat) [more text]
或
echo `cat` [more text]
示例:
wget -q -O- "http://meteocentre.com/montreal/home_e.html" | grep -oP '(?<=Tn= ).*(?=°)' | echo $(cat) °C
-> 5.2 °C
有没有一种简单的方法可以将两个 linux 命令的结果连接在一行中? (即不使用变量)
我从附近的气象站获取当地室外温度。今天的结果是:
5.2
我只是想添加单位,所以结果应该是这样的:
5.2°C
一个示例命令,它几乎给了我我想要的是:
wget -q -O- "http://meteocentre.com/montreal/home_e.html" | grep -oP '(?<=Tn= ).*(?=°)' ; printf "°C\n"
您已经在串联结果。
wget .. | grep ..
输出:5.2\n
printf
输出 °C\n
因此,串联的结果是 5.2\n°C\n
,正是您得到的结果。
你想要做的是去除 5.2
之后的换行符。您可以利用 $(command substitution)
去除尾随换行并将其传递给 printf
:
printf '%s°C\n' "$(wget -q -O- "http://meteocentre.com/montreal/home_e.html" | grep -oP '(?<=Tn= ).*(?=°)')"
在bash中,在末尾添加竖线:
echo $(cat) [more text]
或
echo `cat` [more text]
示例:
wget -q -O- "http://meteocentre.com/montreal/home_e.html" | grep -oP '(?<=Tn= ).*(?=°)' | echo $(cat) °C
-> 5.2 °C