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

前端之家收集整理的这篇文章主要介绍了正则表达式或在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])

猜你在找的正则表达式相关文章