Awk yum list获取最后一个可用包
我需要在存储库中提取最新可用包的子字符串Awk yum list获取最后一个可用包,awk,grep,yum,Awk,Grep,Yum,我需要在存储库中提取最新可用包的子字符串 yum list myCompany-apps-MYPROJECT* 可用软件包 myCompany-apps-MYPROJECT-0.0.0.41-210409.noarch 1-160 myproject myCompany-apps-MYPROJECT-0.0.0.42-210412.noarch 1-162
yum list myCompany-apps-MYPROJECT*
可用软件包
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
我想在MYPROJECT之后和datetime之前提取部件
我试过:
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}
}
输出是:1.0.0.4,我需要它是:0.0.0.47(第二列(1-179)中指出的最新的一个,第二列到底代表什么?)
非常感谢您使用regex提取您想要的数据和您想要排序的数据。然后对您想要排序的数据进行排序,并忽略您感兴趣的数据
yum ... | grep "myCompany-apps-MYPROJECT" |
sed 's/.*-\([^-]*\)-[^ ]* *[0-9]*-\([0-9]*\).*/\1 \2/' |
sort -k2n | tail -n1 | cut -d' ' -f1
使用regexcrosswords ex..一体式
awk
脚本,您可以快速学习regex
... | 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
…|啊/myCompany应用程序MYPROJECT/{next}
{sub(“-”,“,$2)}
max第二列(1-179)中所示的最新版本
然后使用第二列进行排序?@KamiCuk非常感谢它工作得非常完美,但我必须承认我根本不理解sed部分。有更简单的吗?此外,这是否适用于未来的包(例如1-1200)?也许有一个更简单的解决方案,使用yum-list按日期检索最后一个包?谢谢,这个解决方案对我来说很容易理解