Bash 获取--qrencode版本输出的特定部分
我试图只获取Bash 获取--qrencode版本输出的特定部分,bash,text,awk,head,Bash,Text,Awk,Head,我试图只获取qrencode的版本号,但它不起作用。知道为什么吗 $ qrencode --version | head -1 | awk '{print $3}' qrencode version 3.4.4 Copyright (C) 2006-2012 Kentaro Fukuchi 我很困惑,因为这种技术在大多数软件包中都可以很好地使用: $ gzip --version | head -1 | awk '{print $2}' 1.6 编辑:感谢您的帮助。这是因为对于qrencod
qrencode
的版本号,但它不起作用。知道为什么吗
$ qrencode --version | head -1 | awk '{print $3}'
qrencode version 3.4.4
Copyright (C) 2006-2012 Kentaro Fukuchi
我很困惑,因为这种技术在大多数软件包中都可以很好地使用:
$ gzip --version | head -1 | awk '{print $2}'
1.6
编辑:感谢您的帮助。这是因为对于
qrencode
而言,--version
的输出被打印到stderr而不是stdout。根据so回复评论,这在一定程度上是常见的。对我来说有点奇怪,但很公平。您可以将stderr重定向到stdout:
qrencode --version 2>&1 | head -1 | awk '{print $3}'
^^^^
输出:3.4.4
如果您想摆脱head-1
并使用awk
获得相同的结果,请使用
qrencode --version 2>&1 | awk 'NR==1{print $3}'
有关详细信息,请参见。请尝试以下内容
qrencode --version 2>&1 | awk 'FNR==1{print $3;exit}'
好啊那么这是否意味着qrencode使用stderr来打印版本而不是stdout?奇怪的这很常见吗?@Zorglub29根据我的经验,这在某种程度上是很常见的。