我正在编写一个 bash 脚本,它将 curl 所有以 1. 开头的版本号,其中 subversion 高于 10。它从 RSS 页面获取此版本号,并使用 awk grep 和正则表达式的组合将它们打印在新行上。
curl -v --silent https://website.com.rss 2>&1 | awk -F '<title>|<\/title>' '{print $2}' | grep "^1\.[0-9][0-9]\."
上面的命令产生:
1.10.1
1.10.2
1.10.3
1.11.1
1.11.2
1.11.4
我试图让输出仅显示每个子版本的最高子子版本。例如,从上面的输出我只想得到:
1.10.3
1.11.4
因为它们都是各自子版本的最新版本。
我不太确定如何实现这一目标,或者是否可能实现。我认为我需要一个循环来使用可能的另一个正则表达式来查看每个循环,但我被难住了。有什么建议吗?
最佳答案
在 awk 中(使用 @sergio 的数据):
$ awk '
BEGIN{FS=OFS="."}
$3 > a[$1 "." $2] {
a[$1 "." $2]=$3
}
END {
for(i in a)
print i,a[i]
}' file
1.10.3
1.11.4
1.12.13
1.13.4
输出顺序是awk for
默认的,即。出现随机。
关于regex - 如何直接在正则表达式模式之后找到最大整数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50301996/