首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将shell输出过滤为只包含小数的数字?

如何将shell输出过滤为只包含小数的数字?
EN

Stack Overflow用户
提问于 2020-12-05 14:29:22
回答 2查看 70关注 0票数 1

我有CI/CD Config,它需要python版本被pyenv设置为默认值。我想要python2 -V输出只显示2.7.18的例子。但是,它没有显示2.7.18,而是显示了全文Python 2.7.18

但是,当我在python3 python -V中使用它时,它显示了正确的当前python3版本(3.9.0)。

我使用下面的代码来尝试只显示数字:$(python -V | grep -Eo '[0-9]\.[0-9]\.[10-19]')

并使用pyenv:pyenv global $(python3 -V | grep -Eo '[0-9]\.[0-9]\.[10-19]') $(python -V | grep -Eo '[0-9]\.[0-9]\.[10-19]')设置默认值

所以pyenv $(python3 version) $(python2 version)

如下图所示:

Image of wrong output

谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-12-05 16:50:48

一种简单的方法是将字符串Python替换为emtpy字符串(如果存在)。

这里是一个简短的一行

代码语言:javascript
复制
python -V 2>&1| sed -e "s/Python//g" | xargs

这将打印python版本,将stderr重定向到stdout,将"Python“替换为"”。不带参数的Xargs返回修剪后的输入字符串。

票数 1
EN

Stack Overflow用户

发布于 2020-12-05 22:43:39

以下是获取版本号的其他几种方法:

代码语言:javascript
复制
# Print 1 word per line, the select the last word:
python -V 2>&1 | xargs -n1 | tail -n1

# Print the last word:
python -V 2>&1 | perl -lane 'print $F[-1];'

# Print the first stretch of 1 or more { digits or periods }:
python -V 2>&1 | grep -Po '[\d.]+'
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65154433

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档