2017-06-27 107 views
0

我有一个包含应用程序及其版本号的文件。我想从自动化脚本中更改它们的版本。下面是该文件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说

回答

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

传给你变量的awk与-v和使用正则表达式搜索AWK内BM条目,而不是用grep。

+0

非常感谢。它工作完美无瑕。你知道为什么在我的awk命令中附加了一个零吗?很高兴知道awk为什么如此表现。 –

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 
1

随着单sed的命令:

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

输出:

bm_app:5.7.8 
sm_app:7.0.5 
相关问题