如何使用bash从行中提取版本字符串并将其保存到变量?

如何使用bash从行中提取版本字符串并将其保存到变量?,bash,awk,sed,Bash,Awk,Sed,我不熟悉脚本编写,我有一项任务,包括从LOC中提取一个版本并将其保存到$version。这行代码如下所示: #定义项目_版本“21.02” 我必须提取“21.02”并使用bash将其保存在$VERSION中。 现在,我正在使用以下命令: awk'/PROJECT_VERSION/{print$NF}common/ESUtils.cpp 但它会返回更多字符串。你能帮我吗?答案是: VERSION=`awk '/PROJECT_VERSION/{print $3F}' project.cpp 答案

我不熟悉脚本编写,我有一项任务,包括从LOC中提取一个版本并将其保存到$version。这行代码如下所示:

#定义项目_版本“21.02”

我必须提取“21.02”并使用bash将其保存在$VERSION中。 现在,我正在使用以下命令:


awk'/PROJECT_VERSION/{print$NF}common/ESUtils.cpp

但它会返回更多字符串。你能帮我吗?

答案是:

VERSION=`awk '/PROJECT_VERSION/{print $3F}' project.cpp
答案是:

VERSION=`awk '/PROJECT_VERSION/{print $3F}' project.cpp

你也可以考虑使用< /P>

awk'$2==“PROJECT_VERSION”{print$3;exit}公共/ESUtils.cpp
这将找到第一条记录,其中字段2等于
PROJECT\u VERSION
,并输出字段3的值,然后立即退出,而不进一步查看输入文件

见:

#/bin/bash
s='#定义项目_版本“21.02”
1项目_版本“22.02”

AWK’$ 2==“PrimeToX版本”{打印3美元;退出}

您也可以考虑使用

awk'$2==“PROJECT_VERSION”{print$3;exit}公共/ESUtils.cpp
这将找到第一条记录,其中字段2等于
PROJECT\u VERSION
,并输出字段3的值,然后立即退出,而不进一步查看输入文件

见:

#/bin/bash
s='#定义项目_版本“21.02”
1项目_版本“22.02”
awk'$2==“项目版本”{print$3;exit}'使用sed:

VERSION=$(sed -En '/PROJECT_VERSION/s/(^.*\")([[:digit:]]+\.[[:digit:]]+)(\".*$)/\2/p' project.cpp)
使用-E启用正则表达式解释,然后搜索带有“PROJECT_VERSION”的行。使用该行,将该行拆分为括号中指定的3个部分,并用该行替换第二部分,打印结果。

使用sed:

VERSION=$(sed -En '/PROJECT_VERSION/s/(^.*\")([[:digit:]]+\.[[:digit:]]+)(\".*$)/\2/p' project.cpp)

使用-E启用正则表达式解释,然后搜索带有“PROJECT_VERSION”的行。使用这一行,将该行拆分为括号中指定的3个部分,并用该行替换第二部分,打印结果。

我刚刚看到,为了打印第三个字段,我必须使用$3F。
awk'/PROJECT_VERSION/{print$NF}文件
应该适合您,什么是
,但它会返回更多的字符串
,您将在输出中得到这些字符串?请进一步解释。我刚刚看到,为了打印第三个字段,我必须使用$3F。
awk'/PROJECT\u VERSION/{print$NF}文件
应该适合您,什么是
但它返回更多字符串
您在输出中得到的?请再解释一下。