Issue
I need to extract a substring of my latest available package in a repository
yum list myCompany-apps-MYPROJECT*
Available Packages
myCompany-apps-MYPROJECT-0.0.0.41-210409.noarch 1-160 myproject
myCompany-apps-MYPROJECT-0.0.0.42-210412.noarch 1-162 myproject
myCompany-apps-MYPROJECT-0.0.0.43-210412.noarch 1-163 myproject
myCompany-apps-MYPROJECT-0.0.0.44-210412.noarch 1-173 myproject
myCompany-apps-MYPROJECT-0.0.0.45-210412.noarch 1-174 myproject
myCompany-apps-MYPROJECT-0.0.0.46-210412.noarch 1-176 myproject
myCompany-apps-MYPROJECT-0.0.0.47-210412.noarch 1-179 myproject
myCompany-apps-MYPROJECT-1.0.0.1-210407.noarch 1-146 myproject
myCompany-apps-MYPROJECT-1.0.0.2-210407.noarch 1-147 myproject
myCompany-apps-MYPROJECT-1.0.0.3-210408.noarch 1-149 myproject
myCompany-apps-MYPROJECT-1.0.0.4-210408.noarch 1-150 myproject
I want to extract the part after MYPROJECT and before the datetime
I tried :
function lastVersion () {
last_version=$(yum list myCompany-apps-MYPROJECT* | grep "myCompany-apps-MYPROJECT" | awk '{ print $1 }'| awk -F "-" '{ print $4 }' | sort -V | tail -1)
echo ${last_version}
}
The output is : 1.0.0.4 , i need it to be : 0.0.0.47 ( the latest one as indicated in the 2nd column (1-179) , what represents the 2nd column exactly ?)
Thank you very much
Solution
all in one awk
script...
... | awk '!/myCompany-apps-MYPROJECT/ {next}
{sub("-",".",$2)}
max<$2 {max=$2; split($1,f,"-"); maxV=f[4]}
END {print maxV}' file
0.0.0.47
Answered By - karakfa