bash用另一个

时间:2017-06-27 17:39:59

标签: bash

我有一个包含应用程序及其版本号的文件。我想从自动脚本中更改其版本。以下是文件的示例

bm_app:2.2.9
sm_app:7.0.5

现在我有一个存储新版本bm_app的变量。

echo $fg
5.7.8

现在,当我尝试使用此变量替换bm_app的版本时,会将零附加到版本的次要部分,如下所示。

grep bm LATEST_APP_VERSION.md | awk -F ':' '{print $1":"'$fg'}'
bam_app:5.70.8

现在我不希望将不必要的零附加到我的输出中。我试过" printf"格式化它,但没有成功。任何帮助都非常感谢。

Ashutosh说

3 个答案:

答案 0 :(得分:1)

awk -v var=$fg -F: '/bm/ {print $1":"var}' filename

使用-v将变量传递给awk并使用正则表达式在awk中搜索bm条目而不是使用grep。

答案 1 :(得分:1)

您可以使用-v awk标志传入变量。

使用示例:

#!/bin/bash
BM="bm_app:2.2.9"
fg="5.7.8"
echo $BM | awk -v x=$fg -F ':' '{print $1":"x}'

输出:

bm_app:5.7.8

答案 2 :(得分:1)

使用单个 sed 命令:

sed 's/\(bm_app:\).*/\1'"$fg"'/' LATEST_APP_VERSION.md

输出:

bm_app:5.7.8
sm_app:7.0.5