微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

正则表达式或在python中拆分shell awk等价物

我有一个代理版本文件,我需要解析以获取应用程序版本的详细信息.
版本文件/opt/app_folder/agent_version.txt的(示例)内容如下:

Version: 10.2.4.110
Pkg name: XXXX-10.2.4-Agent-Linux-x86_64
Revision: 110
Patch version: 23

我需要输出作为Version的第3个数字和Release版本的数字.
例如:

Current Version: 10.2.4.23

所以,我使用下面的代码来使用awk在shell中实现这一点

FILE=/opt/app_folder/agent_version.txt

my_ver=`awk -F[:.] '/Version/ {gsub(" ",""); print $2"."$3"."$4}' ${FILE}`
            OR
my_ver=`awk -F[-] '/Pkg/ {print $2}' ${FILE}`

my_patch=`awk -F[:.] '/version/ {gsub(" ",""); print $NF}' ${FILE}`
my_cur_ver="$my_ver.$my_patch"

echo $my_cur_ver
10.2.4.23

如何在Python中实现此结果?使用正则表达式或拆分或两者的组合?

我在RHEL 6.2 x86_64上使用Python 3.3

解决方法

假设txt保存文件内容,这将为您提供以下版本:

import re
version = re.findall("Version:\s+((?:\d+\.){3})",txt)[0] + re.findall("Patch version:\s+(\d+)",txt)[0]

或者如果您只想要一个正则表达式:

version = ''.join(re.findall("Version:\s+((?:\d+\.){3}).*Patch version:\s+(\d+)",txt,re.DOTALL)[0])

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐