为什么 cut 不适用于程序的输出?

Why does cut not work with the output of a program?

我需要从以下输出中获取程序的版本号:

~$ pyrcc5 -version
pyrcc5 v5.15.0
~$

现在我想cut could do the job:

~$ pyrcc5 -version | cut -f2 -d"v"
pyrcc5 v5.15.0

~$

但它并没有切掉任何东西?!?

~$ echo $(pyrcc5 -version) | cut -f2 -d"v"
pyrcc5 v5.15.0

~$

更糟糕的是......预期输出将是

5.15.0

pyrcc5 正在将版本字符串打印到 stderr,而不是 stdout。试试 pyrcc5 -version 2>&1 | cut -dv -f2.