小能豆

管道在 Bash 中似乎没有任何作用

py

谁能解释一下为什么

python -V | awk '{print $2}'

返回此

Python 2.7.5                             

而不是

2.7.5

如何才能仅返回版本号而不返回“Python”?


阅读 7

收藏
2024-11-14

共1个答案

小能豆

您之所以会获得完整版本字符串"Python 2.7.5"而不是仅仅获得版本字符串"2.7.5",是因为该awk命令只是根据空格分隔符提取输出的第二部分。

当你运行时:

python -V | awk '{print $2}'

输出python -V如下:

Python 2.7.5

这里,awk '{print $2}'采用第二个字段(即"2.7.5"),但包括尾随空格作为该字段的一部分,导致输出2.7.5带有额外的填充。

解决方案:

您可以使用或其他方法(例如 )修改awk命令以删除前导部分。"Python "``awk``cut

选项 1:使用awk字符串操作

您可以使用awk直接打印版本部分:

python -V 2>&1 | awk '{print $2}'

为什么这样做有效:

  • 2>&1确保stdoutstderr都被捕获(因为在某些版本中python -V会打印到stderr)。
  • awk '{print $2}'提取第二个字段,即版本号。

选项 2:使用cut提取版本号

您还可以使用它cut来仅获取版本号:

python -V 2>&1 | cut -d' ' -f2

为什么这样做有效:

  • cut -d' ' -f2按空格()分割输入-d' ',并-f2选择第二个字段,即版本号。

最终答案:

以下任一方法都将仅返回版本号(例如2.7.5),而不返回"Python "前缀:

python -V 2>&1 | awk '{print $2}'

或者

python -V 2>&1 | cut -d' ' -f2
2024-11-14