【问题标题】:grab specific part of the output of the --version of qrencode抓取 qrencode 的 --version 输出的特定部分
【发布时间】:2020-06-15 17:13:18
【问题描述】:

我尝试只获取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。根据如此回答 cmets,这在某种程度上是常见的。对我来说有点奇怪,但足够公平。

【问题讨论】:

    标签: bash text awk head


    【解决方案1】:

    请您尝试关注一下。

    qrencode --version 2>&1 | awk 'FNR==1{print $3;exit}'
    

    【讨论】:

      【解决方案2】:

      您可以将标准错误重定向到标准输出:

      qrencode --version 2>&1 | head -1 |  awk '{print $3}'
                         ^^^^
      

      输出:3.4.4

      如果您想摆脱 head -1 并获得与 awk 相同的结果,请使用

      qrencode --version 2>&1 | awk 'NR==1{print $3}'
      

      详情请见cut or awk command to print first field of first row

      【讨论】:

      • 好的。那么这是否意味着 qrencode 使用标准错误来打印版本而不是标准输出?诡异的。这很常见吗?
      • @Zorglub29 根据我的经验,这在某种程度上很常见。
      猜你喜欢
      • 2022-01-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-03
      • 2022-01-11
      相关资源
      最近更新 更多