Sed命令无法提取nginx版本号

问题描述 投票:0回答:2

我陷入一种奇怪的情况:我试图用sed提取nginx的版本,但它不起作用,只有字符串版本才有效:

[root@hostname~]# echo $(nginx -v) | sed -n 's/nginx version: nginx\///p'
nginx version: nginx/1.16.1

[root@hostname~]# nginx -v | sed -n 's/nginx version: nginx\///p'
nginx version: nginx/1.16.1

[root@hostname~]# echo 'nginx version: nginx/1.16.1' | sed -n 's/nginx version: nginx\///p'
1.16.1

任何线索?

shell sed
2个回答
0
投票

您需要引用它并将stderr重定向到stdout:

 echo "$(nginx -v 2>&1)" | sed -n 's/nginx version: nginx\///p'

需要报价,因为nginx -v输出中有空格。


0
投票
nginx -v |& sed 's/nginx version: nginx\///'
1.14.2

|&部分是经典的[[pipe,但使用特殊的STDERR技巧将STDOUT重定向到&

因为nginx -v输出在错误输出上,也称为STDERR

0
投票
按照吉尔·奎诺(Gilles Quenot)的指示,但带有awk

nginx -v |& awk -F '/' '{ print $2 }'

© www.soinside.com 2019 - 2024. All rights reserved.