Mar*_*cos 5 python regex bash awk split
我有一个代理版本文件,我需要解析它才能获取应用程序版本详细信息。版本文件的(示例)内容/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
Run Code Online (Sandbox Code Playgroud)
我需要输出为 1st 3 个数字 fromVersion
和数字 from Release version
。例如:
Current Version: 10.2.4.23
Run Code Online (Sandbox Code Playgroud)
所以,我使用下面的方法在 shell 中使用 awk
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
Run Code Online (Sandbox Code Playgroud)
我如何在 Python 中实现这个结果?使用正则表达式或拆分或两者的组合?
我使用Python 3.3
上RHEL 6.2 x86_64
假设txt
保存文件的内容,这将为您提供版本:
import re
version = re.findall("Version:\s+((?:\d+\.){3})", txt)[0] + re.findall("Patch version:\s+(\d+)", txt)[0]
Run Code Online (Sandbox Code Playgroud)
或者,如果您只想使用一种正则表达式:
version = ''.join(re.findall("Version:\s+((?:\d+\.){3}).*Patch version:\s+(\d+)", txt, re.DOTALL)[0])
Run Code Online (Sandbox Code Playgroud)