加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-14 05:58:45 所属栏目:百科 来源:网络整理
导读:我有一个代理版本文件,我需要解析以获取应用程序版本的详细信息. 版本文件/opt/app_folder/agent_version.txt的(示例)内容如下: Version: 10.2.4.110Pkg name: XXXX-10.2.4-Agent-Linux-x86_64Revision: 110Patch version: 23 我需要输出作为Version的第3个
我有一个代理版本文件,我需要解析以获取应用程序版本的详细信息.
版本文件/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])

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读