簡體   English   中英

在sed和awk命令中需要幫助

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM