[英]Need help in sed and awk commands
我有一個包含內容的文本文件:(version.txt)
#Project Name: XYZ
#Module Name: ABC
#
#
currentVersion=9.2.04
現在,我有一個如下所示的shell腳本,它將version.txt的最后一行替換為currentVersion=9.2.05
腳本:
ls_version=`grep -i currentVersion version.txt | awk '{print $NF}'`
counter=`echo $ls_version | awk -F . '{print $NF}'`
fs_version=`echo $ls_version | awk -F"." -v OFS='.' '{$NF=""; print $0}'`
echo "counter b4 addition: $counter"
counter=`expr ${counter} + 1`
version=`echo ${fs_version}$counter`
echo "ls_version: $ls_version"
echo "fs_version: $fs_version"
echo "counter post addition: $counter"
echo "final version: $version"
sed -i -e "s/\(currentVersion=\).*/\1$version/" version.txt
但相反,它給出如下的o / p:
currentVersion=05
currentVersion=05
currentVersion=05
currentVersion=05
currentVersion=05
currentVersion=05
currentVersion=05
您能告訴我此腳本有什么問題嗎?
提前致謝
執行awk之后,將有助於您增加Input_file中的版本。
awk -F'.' '/currentVersion/{$3=sprintf("%02d",$3+1)"}"} 1' OFS="." Input_file
輸出如下。
{#Project Name: XYZ
#Module Name: ABC
#
#
currentVersion=9.2.05}
基於此 ,我寫道:
perl -pe 's/^currentVersion=((\d+\.)*)(\d+)(.*)$/$1.(sprintf("%02d", $3+1)).$4/e' file.txt
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.